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

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

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

大家好,今天分享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 鏡像都是一個 基礎鏡像(可以理解為依托點),在基礎鏡像的層次和基礎之上,所做的修改以及增加的功能,都會生成新的一層

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

在這里插入圖片描述

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

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

三層在二層的基礎上加上文件10,文件11

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

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

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

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

各層之間是獨立的,各層之間重復的東西是共用的,也就是關于的部分不用再下載了

這就是docker 鏡像分層的概念

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

和這個意思是一樣的的

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

就是我們的鏡像層

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

在這里插入圖片描述

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

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

相關文章

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

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

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

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

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

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

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

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

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

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

    本文主要介紹了docker安裝sentinel的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    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)境變量的過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • Docker中部署Nginx并掛載配置文件的實現(xiàn)

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

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

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

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

    Docker啟動容器后自動關閉問題解決

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

最新評論

营山县| 玛纳斯县| 格尔木市| 定边县| 探索| 石门县| 鄂州市| 安康市| 五河县| 江源县| 黄浦区| 连江县| 茂名市| 商河县| 锦屏县| 安徽省| 连江县| 乐平市| 扎兰屯市| 彭州市| 呼伦贝尔市| 沙田区| 四川省| 荣昌县| 九龙县| 肇东市| 东海县| 临夏县| 罗江县| 台江县| 赤峰市| 尼木县| 库车县| 灵山县| 静海县| 汕头市| 博野县| 体育| 碌曲县| 石嘴山市| 蒲江县|