docker image篇

本節介紹容器的鏡像是怎麼構成的,我們在pull一個鏡像的時候可以看到(如下),他一共下載了6個文件。前面我們說過docker的鏡像是分層構建,聯合掛載。鏡像的最底層是bootfs,用於系統引導的文件系統,包括bootloader和kernel,容器啓動完成後會被卸載以節約內存資源;在上一層爲rootfs,表現爲docker容器的根文件系統,當我們使用exec進入容器時候,看到的文件系統就由該層實現,rootfs由內核掛在爲“只讀”模式,而後通過“聯合掛載”技術額外掛在一個“可寫”層。

[root@localhost ~]# docker pull redis:latest
latest: Pulling from library/redis
f7e2b70d04ae: Already exists 
421427137c28: Pull complete 
4af7ef63ef0f: Pull complete 
b858087b3517: Pull complete 
2aaf1944f5eb: Pull complete 
8270b5c7b90d: Pull complete 
Digest: sha256:4be7fdb131e76a6c6231e820c60b8b12938cf1ff3d437da4871b9b2440f4e385
Status: Downloaded newer image for redis:latest

docker image篇
docker是如何實現可寫的,如下圖:位於下層的鏡像稱爲父鏡像,最底層的稱爲基礎鏡像,最上層的爲“讀寫層”,其下均爲“只讀層”。
docker image篇
所有的這些鏡像都有一個統一的存儲位置:docker Registry,容器啓動時,docker daemon會試圖從本地獲取相關鏡像,本地鏡像不存在時,會去Registry中下載該鏡像並保存到本地,如果Regirsty沒有指定,默認爲dockerhub.com,當然,我們也可以自建Registry。
docker image篇
docker pull鏡像的命令格式爲:

docker pull <registry>[:<port>]/[<namespace>]<name>:<tag>
如下(docker.io可以省略,他是默認的Registry):
[root@localhost ~]# docker pull docker.io/nginx:alpine

鏡像的生命週期:

docker image篇
鏡像的製作方式:
1.基於Dockerfile
2.基於容器製作


鏡像的導入導出:
鏡像導出命令格式:docker save [options] image [image...]
鏡像導入命令格式:docker load [OPTIONS]
下面爲導出導入示例
docker image篇


擴展閱讀:
Registry可以分爲以下幾類:
Sponsor Registry:第三方的registry,供客戶和Docker社區使用
Mirror Registry:第三方的registry,可公開使用。如阿里雲的docker加速鏡像服務
Vendor Registry:由發佈Docker鏡像的供應商提供的registry
Private Registry:通過設有防火牆和額外的安全層的私有實體提供的registry

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章