【Docker】第二篇 Docker映象管理

旅行者-Travel發表於2018-09-20

一、搜尋映象

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   

 

相關文章