Docker基礎篇2:映象管理
1、映象簡介
簡單說,Docker映象是一個不包含Linux核心而又精簡的Linux作業系統。
映象不是一個單一的檔案,而是有多層構成。我們可以通過docker history <ID/NAME> 檢視映象中各層內容及大小,每層對應著Dockerfile中的一條指令。Docker映象預設儲存在/var/lib/docker/<storage-driver>中。
容器其實是在映象的最上面加了一層讀寫層,在執行容器裡做的任何檔案改動,都會寫到這個讀寫層。如果容器刪除了,最上面的讀寫層也就刪除了,改動也就丟失了。
Docker使用儲存驅動管理映象每層內容及可讀寫層的容器層。
2、修改映象源
Docker Hub是由Docker公司負責維護的公共註冊中心,包含大量的容器映象,Docker工具預設從這個公共映象庫下載映象。https://hub.docker.com/explore。
預設是國外的源,下載會慢,建議配置國內映象倉:
[[email protected]_190_147_centos ~]# vim /etc/docker/daemon.json
{
"registry-mirrors":["https://registry.docker-cn.com"]
}
3、映象常用命令說明
通過docker --help命令我們發現,映象管理的
【映象儲存的位置】
[[email protected]_190_147_centos ~]# ls /var/lib/docker/image/
overlay2
【檢視映象管理命令提示】
[[email protected]_190_147_centos ~]# docker image --help
4、 映象管理命令使用
【列出所有映象】
[[email protected]_190_147_centos ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 568c4670fa80 32 hours ago 109MB
【檢視映象歷史】會顯示每一層的情況
[[email protected]_190_147_centos ~]# docker image history nginx
【檢視映象詳情inspect】
[[email protected]_190_147_centos ~]# docker image inspect nginx:latest
[
{
"Id": "sha256:568c4670fa800978e08e4a51132b995a54f8d5ae83ca133ef5546d092b864acf",
"RepoTags": [
"nginx:latest"
],
"RepoDigests": [
"[email protected]:5d32f60db294b5deb55d078cd4feb410ad88e6fe77500c87d3970eca97f54dba"
],
"Parent": "",
"Comment": "",
"Created": "2018-11-27T22:21:45.207738888Z",
"Container": "1455cab9c97f6945336dd97d5dfca0429eacbb739fcd362cc528ed8a175fcc7b",
"ContainerConfig": {
"Hostname": "1455cab9c97f",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NGINX_VERSION=1.15.7-1~stretch",
"NJS_VERSION=1.15.7.0.2.6-1~stretch"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD [\"nginx\" \"-g\" \"daemon off;\"]"
],
"ArgsEscaped": true,
"Image": "sha256:cf9409661039371fa3448619fb988625e4542108921c4c8f923c5bccc51601eb",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": [],
"Labels": {
"maintainer": "NGINX Docker Maintainers <[email protected]>"
},
"StopSignal": "SIGTERM"
},
"DockerVersion": "17.06.2-ce",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NGINX_VERSION=1.15.7-1~stretch",
"NJS_VERSION=1.15.7.0.2.6-1~stretch"
],
"Cmd": [
"nginx",
"-g",
"daemon off;"
],
"ArgsEscaped": true,
"Image": "sha256:cf9409661039371fa3448619fb988625e4542108921c4c8f923c5bccc51601eb",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": [],
"Labels": {
"maintainer": "NGINX Docker Maintainers <[email protected]>"
},
"StopSignal": "SIGTERM"
},
"Architecture": "amd64",
"Os": "linux",
"Size": 109116878,
"VirtualSize": 109116878,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/ab2eb6e813d97b338827eae1c4982601a8961cf3b30b935f371fe925b2414959/diff:/var/lib/docker/overlay2/2f5ba371b973ed35e737c77372a62500a7b895d65534c1cc1eb1ee9b72440bc3/diff",
"MergedDir": "/var/lib/docker/overlay2/d6e9f31671ba501902ff947b708de737401b3d640816180c86b22a0d852732ec/merged",
"UpperDir": "/var/lib/docker/overlay2/d6e9f31671ba501902ff947b708de737401b3d640816180c86b22a0d852732ec/diff",
"WorkDir": "/var/lib/docker/overlay2/d6e9f31671ba501902ff947b708de737401b3d640816180c86b22a0d852732ec/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:ef68f6734aa485edf13a8509fe60e4272428deaf63f446a441b79d47fc5d17d3",
"sha256:ad5345cbb119f7c720123e3adf28b164143e4157ca6e46a629ca694e75f7825f",
"sha256:ece4f9fdef598687f23d39643bacbf2c609201b087b93bbae81b931da72d2a64"
]
},
"Metadata": {
"LastTagTime": "0001-01-01T00:00:00Z"
}
}
]
【給映象一個標記tag】
[[email protected]_190_147_centos ~]# docker image tag nginx wzy_nginx
【save儲存一個映象歸檔tar檔案】
[[email protected]_190_147_centos ~]# docker image save nginx > nginx_v1.tar
[[email protected]_190_147_centos ~]# du -sh nginx_v1.tar
108M nginx_v1.tar
[[email protected]_190_147_centos ~]# ll nginx_v1.tar
-rw-r--r-- 1 root root 112844800 Nov 29 14:06 nginx_v1.tar
【載入一個歸檔tar檔案的映象】
[[email protected]_190_147_centos ~]# docker load < nginx_v1.tar
Loaded image: nginx:latest
【匯入匯出容器】
[[email protected]_190_147_centos ~]# docker run -itd busybox
54254189b04e92e9842b73326ccae72173bc4b7b120672a03d8aff1bcf865e3e
[[email protected]_190_147_centos ~]# docker export 54254189b04e > busybox.tar
[[email protected]_190_147_centos ~]# docker image import busybox.tar busybox:self
sha256:0ebfcabd404262fe2e9e324438ae3c617165aabbfc7c58ae5452a2da28c813dd
【注意】save命令和export命令,以及load命令與import的區別。save和load命令針對映象而言,export和import針對容器檔案而言。