一、搜尋映象
1、下載一個docker映象:我們可以通過登陸docker網站搜尋自己需要的映象,可以選擇自己所需要的版本,然後通過詳情也可以看到:
網址:https://hub.docker.com/
2、我們也可以通過命令列搜尋:
[root@web130 ~]# docker search centos:7 #如果不帶版本號預設搜到是最新版本的:latest NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 4726 [OK] ansible/centos7-ansible Ansible on Centos7 118 [OK] *我們看輸出內容可以很容易的理解,分別是:名稱,描述,星(類似github上的stars),是否官方映象,是否自動裝配。 *如下搜尋自動建立,以及指定星級的映象,星級預設為0,如果加--no-trunc輸出資訊不截斷顯示,預設是否--no-trunc=true|fales [root@web130 ~]# docker search --automated -s 3 nginx Flag --automated has been deprecated, use --filter=is-automated=true instead Flag --stars has been deprecated, use --filter=stars=3 instead NAME DESCRIPTION .....省略顯示 ...
二、檢視和獲取映象
1、images列出映象:關於images更多資訊可以通過man docker-images來檢視 *此內容下顯示:來自那個倉庫、標籤資訊、映象ID、建立時間、映象大小 [root@web130 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 2、下載一個映象,如果後邊不跟版本號,預設是最新非穩定版本: [root@web130 ~]# docker pull ubuntu #下載映象 *也可以通過上邊搜尋選擇合適的版本號,如下: [root@web130 ~]# docker pull ubuntu:14.04 [root@web130 ~]# docker pull centos:7.4.1708 [root@web130 ~]# docker images #檢視下載的映象,可以看到剛剛下載的是三個映象 REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 c32fae490809 2 weeks ago 188MB ubuntu latest cd6d8154f1e1 2 weeks ago 84.1MB centos 7.4.1708 d3949e34634c 6 weeks ago 197MB [root@web130 ~]# *我們也可以跟上倉庫地址下在,非官網映象源倉庫下載指定映象: [root@web130 ~]# docker pull 倉庫地址/ubuntu:14.04 3、利用該映象建立一個容器: [root@web130 ~]# docker run -it centos:7.4.1708 /bin/bash #後邊詳細說明引數,如果本地沒有下載此映象,自動先下載映象並執行 *如下由於沒有指定標籤,自動下載了最新版本的centos,並開啟了一個shell: [root@web130 ~]# docker run -it centos /bin/bash Unable to find image `centos:latest` locally latest: Pulling from library/centos 256b176beaff: Pull complete Digest: sha256:6f6d986d425aeabdc3a02cb61c02abb2e78e57357e92417d6d58332856024faf Status: Downloaded newer image for centos:latest [root@3e876fdaaf89 /]# ls anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var [root@3e876fdaaf89 /]# 4、使用tag命令為映象新增標籤 [root@web130 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 c32fae490809 2 weeks ago 188MB ubuntu latest cd6d8154f1e1 2 weeks ago 84.1MB centos 7.4.1708 d3949e34634c 6 weeks ago 197MB centos latest 5182e96772bf 6 weeks ago 200MB [root@web130 ~]# docker tag centos:latest mycentos:latest #我們可以看到多出來一個映象,tag的作用類似與新增連結的作用,他們指向同一個源映象檔案、 [root@web130 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 c32fae490809 2 weeks ago 188MB ubuntu latest cd6d8154f1e1 2 weeks ago 84.1MB centos 7.4.1708 d3949e34634c 6 weeks ago 197MB centos latest 5182e96772bf 6 weeks ago 200MB mycentos latest 5182e96772bf 6 weeks ago 200MB 5、使用inspect命令檢視詳細資訊: [root@web130 ~]# docker inspect mycentos [root@web130 ~]# 6、使用history命令檢視映象歷史 [root@web130 ~]# docker history mycentos #映象使用多層組成,列出各層的建立資訊,--no-trunc選項輸出完整的命令 IMAGE CREATED CREATED BY SIZE COMMENT 5182e96772bf 6 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B <missing> 6 weeks ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B <missing> 6 weeks ago /bin/sh -c #(nop) ADD file:6340c690b08865d7e… 200MB [root@web130 ~]#
三、刪除映象
1、通過標籤刪除映象 [root@web130 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 c32fae490809 2 weeks ago 188MB ubuntu latest cd6d8154f1e1 2 weeks ago 84.1MB centos 7.4.1708 d3949e34634c 6 weeks ago 197MB centos latest 5182e96772bf 6 weeks ago 200MB mycentos latest 5182e96772bf 6 weeks ago 200MB [root@web130 ~]# docker rmi mycentos:latest Untagged: mycentos:latest [root@web130 ~]# docker images 刪除。 REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 c32fae490809 2 weeks ago 188MB ubuntu latest cd6d8154f1e1 2 weeks ago 84.1MB centos 7.4.1708 d3949e34634c 6 weeks ago 197MB centos latest 5182e96772bf 6 weeks ago 200MB #我們可以看到mycentos標籤已經被刪除,我們可以看到源映象centos依然存在,所以刪除標籤不影響映象檔案,但是僅剩一個標籤的時候要小心,會將映象檔案 2、通過映象ID刪除映象 [root@web130 ~]# docker rmi centos:latest Error response from daemon: conflict: unable to remove repository reference "centos:latest" (must force) - container 3e876fdaaf89 is using its referenced image 5182e96772bf [root@web130 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3e876fdaaf89 centos "/bin/bash" 40 minutes ago Exited (0) 35 minutes ago friendly_haibt [root@web130 ~]# #顯示無法刪除,因為有一個基於它的容器存在,我們也可以強制刪除 -f:docker rmi -f centos,但是不建議這樣刪除,所有我們如下操作先刪除依賴的容器 [root@web130 ~]# docker rm 3e876fdaaf89 #通過容器id刪除映象 3e876fdaaf89 [root@web130 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@web130 ~]# docker rmi centos:latest #可以看到它刪除了這個映象檔案的所有層 Untagged: centos:latest Untagged: centos@sha256:6f6d986d425aeabdc3a02cb61c02abb2e78e57357e92417d6d58332856024faf Deleted: sha256:5182e96772bf11f4b912658e265dfe0db8bd314475443b6434ea708784192892 Deleted: sha256:1d31b5806ba40b5f67bde96f18a181668348934a44c9253b420d5f04cfb4e37a [root@web130 ~]#
四、建立映象
建立映象的方法:
*基於已有的映象容器建立
*基於本地模板匯入
*基於Dockerfile建立 (後文重點學習Dockerfile)
1、基於已有映象的容器建立 [root@web130 ~]# docker run -it ubuntu:14.04 /bin/bash root@5b117c5dffe1:/# touch yanglt root@5b117c5dffe1:/# exit exit [root@web130 ~]# docker images; REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 c32fae490809 2 weeks ago 188MB ubuntu latest cd6d8154f1e1 2 weeks ago 84.1MB centos 7.4.1708 d3949e34634c 6 weeks ago 197MB [root@web130 ~]# docker commit -m "a new file" -a "Yanglt" 5b117c5dffe1 test:0.1 sha256:40925d6bc8025b8ca6ec68249f4cb371844896a39817f9e9bf80eda4119e8d6f [root@web130 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test 0.1 40925d6bc802 9 seconds ago 188MB ubuntu 14.04 c32fae490809 2 weeks ago 188MB ubuntu latest cd6d8154f1e1 2 weeks ago 84.1MB centos 7.4.1708 d3949e34634c 6 weeks ago 197MB #可以看到一個新的映象test
2、基於本地模板匯入建立 下載地址:https://download.openvz.org/template/precreated/ 選擇要下載映象模板: [root@web130 ~]# wget https://download.openvz.org/template/precreated/centos-7-x86_64-minimal.tar.gz [root@web130 ~]# cat centos-7-x86_64-minimal.tar.gz |docker import - centos:7 [root@web130 ~]# cat centos-7-x86_64-minimal.tar.gz |docker import - centos:7 sha256:3458fe08f84de52d5354a80793e5f806420a2330fc2c2425bb4878bcb8b0efd8 [root@web130 ~]# docker images #可以看到已經出現新的映象 REPOSITORY TAG IMAGE ID CREATED SIZE centos 7 3458fe08f84d 54 seconds ago 435MB test 0.1 40925d6bc802 About an hour ago 188MB ubuntu 14.04 c32fae490809 2 weeks ago 188MB ubuntu latest cd6d8154f1e1 2 weeks ago 84.1MB centos 7.4.1708 d3949e34634c 6 weeks ago 197MB [root@web130 ~]#
五、匯出和載入映象
1、匯出映象 -o + 要匯出最後的檔名 + 要匯出的映象的標籤(名) 或id [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test 0.1 40925d6bc802 20 minutes ago 188MB ubuntu 14.04 c32fae490809 2 weeks ago 188MB ubuntu latest cd6d8154f1e1 2 weeks ago 84.1MB centos 7.4.1708 d3949e34634c 6 weeks ago 197MB [root@localhost ~]# [root@localhost ~]# docker save -o myubuntu_14.04.tar ubuntu:14.04 [root@localhost ~]# ll |grep my* -rw------- 1 root root 197191680 9月 20 20:03 myubuntu_14.04.tar [root@localhost ~]# 2、匯入映象(恢復原有映象) *我們可以將匯出的源映象刪除,然後在匯入 [root@localhost ~]# docker rmi ubuntu:14.04 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test 0.1 40925d6bc802 29 minutes ago 188MB ubuntu latest cd6d8154f1e1 2 weeks ago 84.1MB centos 7.4.1708 d3949e34634c 6 weeks ago 197MB [root@localhost ~]# docker load < myubuntu_14.04.tar Loaded image: ubuntu:14.04 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test 0.1 40925d6bc802 29 minutes ago 188MB ubuntu 14.04 c32fae490809 2 weeks ago 188MB ubuntu latest cd6d8154f1e1 2 weeks ago 84.1MB centos 7.4.1708 d3949e34634c 6 weeks ago 197MB [root@localhost ~]#
六、上傳映象
#我們可以把自己的映象傳到dockerhub官網上,前提是註冊一個使用者
[root@localhost ~]# docker push image_name