最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解docker鏡像的分層(小白必看)

 更新時間:2022年03月14日 10:56:51   作者:思誠代碼塊  
本文關(guān)鍵詳細(xì)介紹了Docker鏡像層次的基本原理詳細(xì)說明,原文中根據(jù)實例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下

大家好,今天分享docker鏡像的分層理解

我們拉取Redis 鏡像

[root@localhost ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
a2abf6c4d29d: Pull complete 
c7a4e4382001: Pull complete 
4044b9ba67c9: Pull complete 
c8388a79482f: Pull complete 
413c8bb60be2: Pull complete 
1abfd3011519: Pull complete 
Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest

我們發(fā)現(xiàn)整個下載的過程里,它是一層一層的

查看Redis 鏡像具體信息

[root@localhost ~]# docker   inspect  redis:latest 
[
    {
        "Id": "sha256:7614ae9453d1d87e740a2056257a6de7135c84037c367e1fffa92ae922784631",
        "RepoTags": [
            "redis:latest"
        ],
        "RepoDigests": [
            "redis@sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2021-12-21T12:42:49.755107412Z",
        "Container": "13d25f53410417c5220c8dfe8bd49f06abdbcd69faa62a9b877de02464bb04a3",
        "ContainerConfig": {
            "Hostname": "13d25f534104",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "6379/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.12",
                "REDIS_VERSION=6.2.6",
                "REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-6.2.6.tar.gz",
                "REDIS_DOWNLOAD_SHA=5b2b8b7a50111ef395bf1c1d5be11e6e167ac018125055daa8b5c2317ae131ab"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"redis-server\"]"
            ],
            "Image": "sha256:e093f59d716c95cfce82c676f099b960cc700432ab531388fcedf79932fc81ec",
            "Volumes": {
                "/data": {}
            },
            "WorkingDir": "/data",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {}
        },
        "DockerVersion": "20.10.7",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "6379/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.12",
                "REDIS_VERSION=6.2.6",
                "REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-6.2.6.tar.gz",
                "REDIS_DOWNLOAD_SHA=5b2b8b7a50111ef395bf1c1d5be11e6e167ac018125055daa8b5c2317ae131ab"
            ],
            "Cmd": [
                "redis-server"
            ],
            "Image": "sha256:e093f59d716c95cfce82c676f099b960cc700432ab531388fcedf79932fc81ec",
            "Volumes": {
                "/data": {}
            },
            "WorkingDir": "/data",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 112691373,
        "VirtualSize": 112691373,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/4330f4d6227b69d1b63675442c8f1fba885046258dcc61d06b2caf176346ac04/diff:/var/lib/docker/overlay2/c2340e727d1c72a5a374c3bc67edb4dc5af45b6c279d949d29e1897262e97d97/diff:/var/lib/docker/overlay2/0890ec7ba8ff12ab8b6b4c392f2b9322ecdb32afdf007e59cbaf1bb9b9954f3d/diff:/var/lib/docker/overlay2/3aee3ca28a64f4b825818c5883ec948d2006b683ce7890716c805b2023540ddf/diff:/var/lib/docker/overlay2/d3b24bd8a350d442e19251f859b45944c5b4af538476f0f5184a3143a7b1debf/diff",
                "MergedDir": "/var/lib/docker/overlay2/28334f5d377c08e8e8d83eaa61d10c424ffbc9367ca7d4c5a2f644d99e22418c/merged",
                "UpperDir": "/var/lib/docker/overlay2/28334f5d377c08e8e8d83eaa61d10c424ffbc9367ca7d4c5a2f644d99e22418c/diff",
                "WorkDir": "/var/lib/docker/overlay2/28334f5d377c08e8e8d83eaa61d10c424ffbc9367ca7d4c5a2f644d99e22418c/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f",
                "sha256:9b24afeb7c2f21e50a686ead025823cd2c6e9730c013ca77ad5f115c079b57cb",
                "sha256:4b8e2801e0f956a4220c32e2c8b0a590e6f9bd2420ec65453685246b82766ea1",
                "sha256:529cdb636f61e95ab91a62a51526a84fd7314d6aab0d414040796150b4522372",
                "sha256:9975392591f2777d6bf4d9919ad1b2c9afa12f9a9b4d260f45025ec3cc9b18ed",
                "sha256:8e5669d8329116b8444b9bbb1663dda568ede12d3dbcce950199b582f6e94952"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]

觀察這一塊

  "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f",
                "sha256:9b24afeb7c2f21e50a686ead025823cd2c6e9730c013ca77ad5f115c079b57cb",
                "sha256:4b8e2801e0f956a4220c32e2c8b0a590e6f9bd2420ec65453685246b82766ea1",
                "sha256:529cdb636f61e95ab91a62a51526a84fd7314d6aab0d414040796150b4522372",
                "sha256:9975392591f2777d6bf4d9919ad1b2c9afa12f9a9b4d260f45025ec3cc9b18ed",
                "sha256:8e5669d8329116b8444b9bbb1663dda568ede12d3dbcce950199b582f6e94952"
            ]
        },

截圖:

在這里插入圖片描述

這就是它一條一條的記錄

看這個圖

這就是一個基本的docker 鏡像的層級

在這里插入圖片描述

可以將docker 鏡像看成一個整體

所有的docker 鏡像都是一個 基礎(chǔ)鏡像(可以理解為依托點),在基礎(chǔ)鏡像的層次和基礎(chǔ)之上,所做的修改以及增加的功能,都會生成新的一層

在上面的這個圖當(dāng)中,我們就是在Ubuntu 16.04 這個鏡像的基礎(chǔ)之上安裝Python,所以它就會變成一個二層的整體,再次在上面加上安全補(bǔ)丁,它就會變成個三層的整體, 就是說此時的這個鏡像是一個三層的鏡像,我們在使用和運行的運行中,就可以看見我們安裝的Python和安全補(bǔ)丁

在這里插入圖片描述

畫個圖:
解釋一下:
這個實例當(dāng)中的鏡像有三層
一層自己有文件1,文件2, 文件3 文件4

二層在一層的基礎(chǔ)上加上文件5,文件6, 文件7 文件8

三層在二層的基礎(chǔ)上加上文件10,文件11

在這里,二層默認(rèn)除了有自己的東西以外,默認(rèn)有一層的所有文件
三層默認(rèn)除了有自己的東西以外,默認(rèn)有二層的所有文件

就是說,二層全部的東西有 文件1 文件2 文件3 文件4 文件5 文件6 文件7 文件8

三層全部的東西有 文件1 文件2 文件3 文件4 文件5 文件6 文件7 文件8 文件9 文件10 文件11

這個實例 鏡像最終包含了 這11個文件

各層之間是獨立的,各層之間重復(fù)的東西是共用的,也就是關(guān)于的部分不用再下載了

這就是docker 鏡像分層的概念

  "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f",
                "sha256:9b24afeb7c2f21e50a686ead025823cd2c6e9730c013ca77ad5f115c079b57cb",
                "sha256:4b8e2801e0f956a4220c32e2c8b0a590e6f9bd2420ec65453685246b82766ea1",
                "sha256:529cdb636f61e95ab91a62a51526a84fd7314d6aab0d414040796150b4522372",
                "sha256:9975392591f2777d6bf4d9919ad1b2c9afa12f9a9b4d260f45025ec3cc9b18ed",
                "sha256:8e5669d8329116b8444b9bbb1663dda568ede12d3dbcce950199b582f6e94952"
            ]
        },

和這個意思是一樣的的

一個新的科
docker 容器都是可讀的,當(dāng)容器啟動的時候,一個新的可寫層加載到容器頂部,這個新的鏡像層,就是我們的容器層,在容器層之下,

就是我們的鏡像層

我們在容器當(dāng)中操作的就是我們的容器層,而我們?nèi)绻胍虬@個容器給別人使用 ,要將鏡像層和容器層一起和起來進(jìn)行打包

在這里插入圖片描述

這就是docker 鏡像分層的整個過程,好了有關(guān)于docker鏡像的分層理解就到這里了,謝謝大家了

到此這篇關(guān)于深入理解docker鏡像的分層(小白必看)的文章就介紹到這了,更多相關(guān)docker鏡像分層內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 清理Docker磁盤空間的幾種有效方法

    清理Docker磁盤空間的幾種有效方法

    隨著Docker的廣泛使用,管理Docker占用的磁盤空間變得越來越重要,長時間運行Docker環(huán)境,未使用的容器、鏡像、卷和網(wǎng)絡(luò)等會逐漸積累,占用大量磁盤空間,本文將介紹幾種清理Docker磁盤空間的有效方法,需要的朋友可以參考下
    2024-08-08
  • 在Docker中部署Mysql并掛載配置文件的步驟詳解

    在Docker中部署Mysql并掛載配置文件的步驟詳解

    Docker是一種流行的容器化平臺,可以簡化應(yīng)用程序的部署和管理,本文我們將給大家詳細(xì)介紹在 Docker 中部署 MySQL 并掛載配置文件的詳細(xì)步驟,需要的朋友可以參考下
    2023-09-09
  • Docker和Kubernetes中使用代理IP的操作方法

    Docker和Kubernetes中使用代理IP的操作方法

    在Docker和Kubernetes中使用代理IP很容易,只需要在Docker守護(hù)進(jìn)程和容器運行時添加相應(yīng)的配置即可,這篇文章主要介紹了如何在Docker和Kubernetes中使用代理IP,需要的朋友可以參考下
    2023-07-07
  • 為運行中的docker容器設(shè)置時區(qū)

    為運行中的docker容器設(shè)置時區(qū)

    本文主要介紹了為運行中的docker容器設(shè)置時區(qū),主要介紹了2種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • docker安裝sentinel的實現(xiàn)示例

    docker安裝sentinel的實現(xiàn)示例

    本文主要介紹了docker安裝sentinel的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • Docker容器安裝指定jdk方式

    Docker容器安裝指定jdk方式

    這篇文章主要介紹了Docker容器安裝指定jdk方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • docker run -e傳遞環(huán)境變量的過程

    docker run -e傳遞環(huán)境變量的過程

    這篇文章主要介紹了docker run -e傳遞環(huán)境變量的過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • Docker中部署Nginx并掛載配置文件的實現(xiàn)

    Docker中部署Nginx并掛載配置文件的實現(xiàn)

    本文主要介紹了Docker中部署Nginx并掛載配置文件的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Docker部署Nginx并修改配置文件的兩種方式

    Docker部署Nginx并修改配置文件的兩種方式

    這篇文章主要給大家介紹了關(guān)于Docker部署Nginx并修改配置文件的兩種方式,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-01-01
  • Docker啟動容器后自動關(guān)閉問題解決

    Docker啟動容器后自動關(guān)閉問題解決

    在使用Docker創(chuàng)建并啟動mysql容器時,發(fā)現(xiàn)mysql容器并沒有啟動而是自動關(guān)閉了,本文主要介紹了Docker啟動容器后自動關(guān)閉問題解決,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07

最新評論

栾城县| 桐乡市| 牡丹江市| 塔城市| 紫阳县| 连平县| 长宁县| 西平县| 平阳县| 岑溪市| 绿春县| 和顺县| 张家口市| 平塘县| 桃园市| 三江| 孝感市| 宣城市| 东至县| 山西省| 南平市| 瑞金市| 许昌市| 樟树市| 庄河市| 伊通| 临泉县| 晋中市| 绥中县| 库车县| 赣州市| 阿鲁科尔沁旗| 彝良县| 南投县| 平乡县| 湘阴县| 姜堰市| 玛纳斯县| 津市市| 纳雍县| 屏山县|