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
mysystem latest 20c44cd7596f 10 days ago 123 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": "",
"/bin/bash"
"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
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]
第一次上傳會提示登入。
本文轉自 棋帥小七 51CTO部落格,原文連結:http://blog.51cto.com/xvjunjie/2045609