前文回顧:
今天來說說鏡像,鏡像是 Docker 中特別重要的概念,是容器運行的基礎,沒有鏡像,後面的一切都不成立。
典型的鏡像表示方法分三部分,用 / 分隔:
remote image hub/namespace/name:tag
其實,我們常看到的鏡像是長這樣的 name:tag,因為從 Docker 官方倉庫拉下來的鏡像,是可以省略前兩部分的。
使用 docker pull name[:tag] 命令來下載鏡像,如果不顯式指定 tag,則默認會選擇 latest 標籤。
$ docker pull busyboxUsing default tag: latestlatest: Pulling from library/busybox76df9210b28c: Pull completeDigest: sha256:95cf004f559831017cdf4628aaf1bb30133677be8702a8c5f2994629f637a209Status: Downloaded newer image for busybox:latestdocker.io/library/busybox:latest
使用 docker images 命令列出本機鏡像。
$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEbusybox latest 1c35c4412082 6 days ago 1.22MB
鏡像 ID 十分重要,它唯一標識了鏡像。
使用 docker tag 命令來給本地鏡像添加新的標籤。
$ docker tag busybox:latest mybusybox:latest$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEbusybox latest 1c35c4412082 6 days ago 1.22MBmybusybox latest 1c35c4412082 6 days ago 1.22MB
可以看到,現在本地的兩個鏡像 ID 是相同的,表示它們指向了同一個鏡像,只是標籤不同而已。
使用 docker inspect 命令來獲取鏡像的詳細信息。
使用 docker history 命令列出鏡像各層的創建信息。
使用 docker search 命令來搜索鏡像。
$ docker search centosNAME DESCRIPTION STARS OFFICIAL AUTOMATEDcentos The official build of CentOS. 6039 [OK]ansible/centos7-ansible Ansible on Centos7 130 [OK]consol/centos-xfce-vnc Centos container with &34; VNC session… 116 [OK]jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repos - … 114 [OK]centos/mysql-57-centos7 MySQL 5.7 SQL database server 76imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 58 [OK]
使用 docker rmi 命令來刪除鏡像,分兩種方式:一種是通過鏡像名和標籤來刪除;一種是通過鏡像 ID 來刪除。平時使用過程中,大部分都是通過鏡像 ID 來刪除。
$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEbusybox latest 1c35c4412082 8 days ago 1.22MBmybusybox latest 1c35c4412082 8 days ago 1.22MB$ docker rmi mybusybox:latest 運行一個容器$ docker run -it centos /bin/bash touch text.txt[root@f0767e2e8964 /] 查看容器$ docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESf0767e2e8964 centos &34; 17 seconds ago Exited (0) 4 seconds ago stupefied_ptolemy39;add file& 查看除了原有鏡像,還有新生成的鏡像,標籤不同$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcentos 1.0 a651491d9bfe 4 seconds ago 237MBcentos latest 470671670cac 4 months ago 237MB
2、基於本地模板導入
使用 docker import 命令將模板導入成鏡像。
3、基於 Dockerfile 創建
這是在實際工作中使用最多的方法,先賣個關子,後續單獨寫一篇來詳細介紹。
使用 docker save 命令保存鏡像到文件。
$ docker save -o busybox.tar busybox
執行之後,在當前目錄下就會有 busybox.tar 文件了,然後可以把這個文件分享給其他人。
收到文件之後,使用 docker load 命令來載入鏡像。
$ docker load < busybox.tar
使用 docker push 命令將鏡像上傳到鏡像倉庫,這樣在其他伺服器上想用這個鏡像,直接 docker pull 一下就可以了,非常方便。
默認的話,會上傳到 Docker Hub 官方倉庫,我們也可以搭建自己的私有倉庫。一般來說,公司內部都會有自己的鏡像倉庫,我們根據需求來使用就可以了。
這篇就到這裡吧,下篇來說說容器。
參考書籍:
往期精彩:
初識 Docker 與安裝 | Docker 系列
技術博客:
https://github.com/yongxinz/tech-blog
同時,也歡迎關注我的微信公眾號 AlwaysBeta,更多精彩內容等你來。