Docker images
Docker 碼頭工人
Docker中鏡像可理解為:應用程序的集裝箱
Docker Images
Docker鏡像含有啟動容器所需要的文件系統及其內容,因此,其用於創建並啟動docker容器
采用分層構建機制,最底層為bootfs,其之為rootfs
bootfs:用於系統引導的文件系統,包括bootloader和kernel,容器啟動完成後會被卸載以節約內存資源
註意:當刪除容器時,這個容器自有的“可寫”層會一起被刪除
Aufs
Advanced multi-layered unification filessystem:高級多層統一文件系統
Docker Registry
啟動容器時,docker daemon會試圖從本地獲取相關的鏡像;本地鏡像不存在時,其將從Registry中下載該鏡像並保存到本地;
註意:Registry如果沒有指定,只給了倉庫名和tag,則默認使用的是Docker hub;如果指向別的Registry需要修改配置給明服務器地址
除了Docker Hub還有其他鏡像倉庫,如:https://quay.io/
Docker Registry分類
Sponsor Registry:第三方的registry,供客戶和Docker社區使用
Mirror Registry:第三方的registry,只讓客戶使用
Vendor Registry:由發布Dcoker鏡像的供應商提供的registry
Private Registry:通過設有防火墻和額外的安全層的私有實體提供的registry
Docker Hub
功能:
鏡像倉庫
自動構建;web構子
組織
GitHub和Bitbucket
制作鏡像
Dockerfile
基於容器制作
Docker Hub automated builds
基於容器制作容器
簡單示例1:讓Busybox容器啟動時就有index.html網頁文件;
使用docker commit命令
[root@centos17 ~]#docker run --name b1 -it busybox WARNING: IPv4 forwarding is disabled. Networking will not work. / # / # mkdir -p /data/html / # echo "Busybox httpd server." > /data/html/index.html
註意:制作容器時讓容器處理運行狀態所以在另外一個終端執行:
[root@centos17 ~]#docker commit -p b1 sha256:db1dfc89367ed1899e85665d6c069e778d66a2cd590d969e761bed77b67cfa23 [root@centos17 ~]#docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> db1dfc89367e 7 seconds ago 1.16MB 制作好的容器 nginx alpine 36f3464a2197 10 days ago 18.6MB busybox latest 22c2dd5ee85d 2 weeks ago 1.16MB redis 4.0-alpine 80581db8c700 3 weeks ago 28.6MB centos latest 49f7960eb7e4 2 months ago 200MB
可使用docker tag命令來給鏡像打標簽;一個鏡像可打多個標簽
[[root@centos17 ~]#docker tag db1dfc89367e liuyutang/httpd:v0.1-1 [root@centos17 ~]#docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE liuyutang/httpd v0.1-1 db1dfc89367e 3 minutes ago 1.16MB nginx alpine 36f3464a2197 10 days ago 18.6MB busybox latest 22c2dd5ee85d 2 weeks ago 1.16MB redis 4.0-alpine 80581db8c700 3 weeks ago 28.6MB centos latest 49f7960eb7e4 2 months ago 200MB [root@centos17 ~]#docker tag liuyutang/httpd:v0.1-1 liuyutang/httpd:latest [root@centos17 ~]#docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE liuyutang/httpd latest db1dfc89367e 5 minutes ago 1.16MB liuyutang/httpd v0.1-1 db1dfc89367e 5 minutes ago 1.16MB nginx alpine 36f3464a2197 10 days ago 18.6MB busybox latest 22c2dd5ee85d 2 weeks ago 1.16MB redis 4.0-alpine 80581db8c700 3 weeks ago 28.6MB centos latest 49f7960eb7e4 2 months ago 200MB
刪除標簽
[root@centos17 ~]#docker image rm liuyutang/httpd:latest Untagged: liuyutang/httpd:latest
啟動制作好的容器;可以看到我們剛才寫的頁面文件存在;容器制作成功
[root@centos17 ~]#docker run --name t1 -it liuyutang/httpd:v0.1-1 WARNING: IPv4 forwarding is disabled. Networking will not work. / # ls /data/ html / # ls /data/html/ index.html / # cat /data/html/index.html Busybox httpd server. / #
示例2:使用Busybox做為基礎鏡像,實現容器啟動時默認運行httpd,並且在制作鏡像時一起打標簽;
[root@centos17 ~]#docker commit -a "liuyutang <[email protected]>" -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p b1 liuyutang/httpd:v0.2 sha256:f394f28026ff01f0bbdceb665b8e18a26c9a43a9c12cc57e4f895808f52e5f36 [root@centos17 ~]#docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE liuyutang/httpd v0.2 f394f28026ff 4 seconds ago 1.16MB liuyutang/httpd latest db1dfc89367e 21 minutes ago 1.16MB liuyutang/httpd v0.1-1 db1dfc89367e 21 minutes ago 1.16MB nginx alpine 36f3464a2197 10 days ago 18.6MB busybox latest 22c2dd5ee85d 2 weeks ago 1.16MB redis 4.0-alpine 80581db8c700 3 weeks ago 28.6MB centos latest 49f7960eb7e4 2 months ago 200MB
Docker images