容器技術Docker雲計算實戰 鏡像操作大總結
獲取鏡像:
docker pull NAME[:TAG]
root@doc-vm:~# docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:150f6d05b8898b79f55114991c01b89688a02dab6115e402b7855792a440caff
Status: Downloaded newer image for hello-world:latest
latest標簽意味著這個鏡像的內容會跟蹤最新的非穩定版本而發步,內容是不穩定的。不要在生產環境中使用latest標簽的鏡像。
使用其他鏡像源進行下載:
root@doc-vm:~# docker pull hub.c.163.com/public/ubuntu:14.04
14.04: Pulling from public/ubuntu
f4ab0b34ba6a: Pull complete
2f0787dc0bfe: Pull complete
54c427d77362: Pull complete
51e87d5424ff: Pull complete
5dfa314e7290: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:ffc2fc66f8e0bfa4b417b817054d3ebec130c8db44342b8fa394e25779633257
Status: Downloaded newer image for hub.c.163.com/public/ubuntu:14.04
pull命令支持的選項:
-a, --all-tags=true|false:是否獲取倉庫中的所有鏡像,默認是否。
查看鏡像信息:
docker images
root@doc-vm:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 9e7424e5dbae 5 days ago 108 MB
hello-world latest f2a91732366c 7 days ago 1.85 kB
ubuntu latest 20c44cd7596f 10 days ago 123 MB
tomcat latest 11df4b40749f 13 days ago 558 MB
mysql latest 5709795eeffa 3 weeks ago 408 MB
busybox latest 6ad733544a63 3 weeks ago 1.13 MB
centos latest d123f4e55e12 3 weeks ago 197 MB
hub.c.163.com/public/ubuntu 14.04 2fe5c4bba1f9 20 months ago 237 MB
images的子選項:
-a, --all=true|false:列出所有鏡像文件,默認是否
--digest=true|false:列出鏡像的數字摘要值,默認是否
-f,--filter=[]:過濾列出的鏡像
--format="TEMPLATE":控制輸出格式
--no-turnc=true|false:對輸出結果中太長的部分是否進行截斷,默認為是
-q,--quiet=true|false:僅僅輸出ID信息,默認是否
使用tag命令添加鏡像標簽:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
root@doc-vm:~# docker tag ubuntu:latest mysystem:latest
root@doc-vm:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 9e7424e5dbae 5 days ago 108 MB
hello-world latest f2a91732366c 7 days ago 1.85 kB
mysystem latest 20c44cd7596f 10 days ago 123 MB
ubuntu latest 20c44cd7596f 10 days ago 123 MB
tomcat latest 11df4b40749f 13 days ago 558 MB
mysql latest 5709795eeffa 3 weeks ago 408 MB
busybox latest 6ad733544a63 3 weeks ago 1.13 MB
centos latest d123f4e55e12 3 weeks ago 197 MB
hub.c.163.com/public/ubuntu 14.04 2fe5c4bba1f9 20 months ago 237 MB
實際上指向的是同一個文件,只是別名而已。
使用inspect命令查看詳細信息:
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
root@doc-vm:~# docker inspect ubuntu
[
{
"Id": "sha256:20c44cd7596ff4807aef84273c99588d22749e2a7e15a7545ac96347baa65eda",
"RepoTags": [
"mysystem:latest",
"ubuntu:latest"
],
"RepoDigests": [
"ubuntu@sha256:cb67b69a3b83dc209418cf15dace1a2fe336e37ef6a972a00fb9e02a608a8184"
],
"Parent": "",
"Comment": "",
"Created": "2017-11-17T21:59:25.014645802Z",
"Container": "e5f1a9df75b86a5d803eaf6f3fed6a0f8ef5fbf15a6c5039df087e4348ed8171",
"ContainerConfig": {
"Hostname": "e5f1a9df75b8",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD [\"/bin/bash\"]"
],
"ArgsEscaped": true,
"Image": "sha256:b5771e7d8dcc594b886dbdd6a9c3de60d45252ca657dfdff6e1d996728dfa2cd",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"DockerVersion": "17.06.2-ce",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash"
],
"ArgsEscaped": true,
"Image": "sha256:b5771e7d8dcc594b886dbdd6a9c3de60d45252ca657dfdff6e1d996728dfa2cd",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 122792927,
"VirtualSize": 122792927,
"GraphDriver": {
"Name": "aufs",
"Data": null
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:788ce2310e2fdbbf81fe21cbcc8a44da4cf648b0339b09c221abacb4cd5fd136",
"sha256:aa4e47c4511638484cd5d95eadd7a8e4da307375ba31ff50d47aa9065dce01e0",
"sha256:b3968bc26fbd527f214f895aeef940a6930c62d853fe8b12bd479f0b53518150",
"sha256:c9748fbf541d3e043521e165b015d45825de33c00a8acb037443cfbd0cb5e677",
"sha256:2f5b0990636a87f1557d64ba39808dcd64031328b2a159c5805115b8e725bbbc"
]
}
}
]
返回的是Josn格式的信息,指定其中一項可以是:
root@doc-vm:~# docker inspect -f {{".Os"}} ubuntu
linux
搜索鏡像:
docker search [OPTIONS] TERM
--automated-true|false:僅僅顯示自動創建的鏡像,默認是否
--no-trunc=true|false:輸出信息不截斷顯示,默認是否
-s,--stare=X:僅僅顯示評價為指定星級以上的鏡像,默認是0,也就是輸出所有的鏡像。
root@doc-vm:~# docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating s... 6868 [OK]
dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 146 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of of... 117 [OK]
ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 89 [OK]
ubuntu-upstart Upstart is an event-based replacement for ... 80 [OK]
neurodebian NeuroDebian provides neuroscience research... 40 [OK]
ubuntu-debootstrap debootstrap --variant=minbase --components... 32 [OK]
nuagebec/ubuntu Simple always updated Ubuntu docker images... 22 [OK]
tutum/ubuntu Simple Ubuntu docker images with SSH access 19
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 18 [OK]
... ...
使用docker history查看鏡像歷史:
鏡像是由多個層組成的,查看每個層的具體內容。
root@doc-vm:~# docker history ubuntu
IMAGE CREATED CREATED BY SIZE COMMENT
20c44cd7596f 10 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
<missing> 10 days ago /bin/sh -c mkdir -p /run/systemd && echo '... 7 B
<missing> 10 days ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\... 2.76 kB
<missing> 10 days ago /bin/sh -c rm -rf /var/lib/apt/lists/* 0 B
<missing> 10 days ago /bin/sh -c set -xe && echo '#!/bin/sh' >... 745 B
<missing> 10 days ago /bin/sh -c #(nop) ADD file:280a445783f309c... 123 MB
刪除鏡像:
使用docker rmi刪除鏡像,命令格式:docker rmi IMAGE [IMAGE...]
如果鏡像有多個標簽,docker rmi命令只會刪除該鏡像的指定標簽,並不會影響鏡像文件,當只剩下一個標簽的時候才會刪除真正的鏡像。
docker rmi ID [ID...]
首先會嘗試刪除所有指向該鏡像的標簽,然後刪除該鏡像的文件本身。
當基於該鏡像的容器正在運行的時候,默認是無法刪除的,可以使用-f參數強制刪除。
創建鏡像:
基於已經有的鏡像創建鏡像:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a,--author="":作者信息
-c,--change=[]:提交的時候執行Dockerfile命令
-m,--message="":提交信息
-p,--pause=true:提交時暫停容器的運行
root@doc-vm:~# docker run -it ubuntu bash
root@6ea8cd52c3eb:/# touch test
root@6ea8cd52c3eb:/# exit
exit
root@doc-vm:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6ea8cd52c3eb ubuntu "bash" 52 seconds ago Exited (0) 30 seconds ago nervous_hoover
root@doc-vm:~# docker commit -m "Added a Docker image" -a "deepking" 6ea8cd52c3eb ubuntutest:1.0
sha256:4ef2ad9d1aea15766c612d3c0090ad6128f803ebb8f4a4b75005d90001dbc893
root@doc-vm:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntutest 1.0 4ef2ad9d1aea 7 seconds ago 123 MB
基於本地模板導入:
主要使用docker import [OPTIONS] file|url|-[REPOSITORY[:TAG]]
使用OpenVZ提供的模板;來創建,下載地址是:https://openvz.org/Download/template/precreated
root@doc-vm:~# cd Downloads/
root@doc-vm:~/Downloads# ll
total 705496
drwxr-xr-x 2 doc doc 4096 11月 29 12:33 ./
drwxr-xr-x 16 doc doc 4096 11月 29 12:13 ../
-rw-rw-r-- 1 doc doc 111337720 11月 29 12:14 centos-6-x86-20170709.tar.xz
-rw-rw-r-- 1 doc doc 67229480 11月 29 12:13 centos-6-x86-minimal-20170709.tar.xz
-rw-rw-r-- 1 doc doc 69329732 11月 29 12:13 centos-7-x86_64-minimal-20170709.tar.xz
-rw-rw-r-- 1 doc doc 81103335 11月 29 12:13 debian-6.0-x86-minimal.tar.gz
-rw-rw-r-- 1 doc doc 155356791 11月 29 12:16 debian-6.0-x86.tar.gz
-rw-rw-r-- 1 doc doc 181654531 11月 29 12:18 ubuntu-15.10-x86_64.tar.gz
-rw-rw-r-- 1 doc doc 56375699 9月 14 17:13 VMwareTools-10.1.15-6627299.tar.gz
root@doc-vm:~# cat debian-6.0-x86-minimal.tar.gz | docker import - debian:6.0
存儲和載入鏡像:
root@doc-vm:~# docker save -o tomcat_latest.tar tomcat # 存儲鏡像
root@doc-vm:~# ll
drwxr-xr-x 16 doc doc 4096 11月 29 13:52 ./
drwxr-xr-x 3 root root 4096 11月 27 21:52 ../
-rw------- 1 root root 576676352 11月 29 13:52 tomcat_latest.tar
root@doc-vm:~# docker load --input tomcat_latest.tar # 載入鏡像
Loaded image: tomcat:latest
上傳鏡像:
docker push NAME[:TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]
第一次上傳會提示登錄。
容器技術Docker雲計算實戰 鏡像操作大總結