1、Docker 镜像简介
Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。Docker 镜像属于整个结构中的镜像层,如下图,
镜像层依赖于一系列的底层技术,比如文件系统(filesystems)、写时复制(copy-on-write)、联合挂载(union mounts)等。镜像作为 Docker 最突出的创新之一,它变革了软件交付标准。理解镜像,对理解整个 Docker 的生命周期非常重要。
2、查看Docker 镜像
要查看系统上的Docker镜像列表,可以使用如下命令:
docker images
该命令用于显示当前系统上安装的所有镜像。执行docker images命令输出结果如下图:
从上面的输出中,可以看到服务器有七个映像。每个图像具有以下属性:
TAG :用于逻辑上的镜像标签。
Image ID :镜像ID,用于唯一地标识图像。
Created :镜像创建时间,创建以来的天数。
Size :镜像占用空间的大小
注意:一个仓库中可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同的版本。
3、下载Docker 镜像
我们可以手动使用docker pull直接下载镜像,也可以当使用docker run运行容器时,使用的镜像如果在本地中不存在,docker 自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。如下,
docker pull image
或者
docker run image
说明:
image:镜像的名称
例如,
使用docker run 命令:
[root@kvm2 ~]# docker run -it ubuntu:14.04 /bin/bash Unable to find image 'ubuntu:14.04' locally 14.04: Pulling from library/ubuntu 2e6e20c8e2e6: Pull complete 0551a797c01d: Pull complete 512123a864da: Pull complete Digest: sha256:60840958b25b5947b11d7a274274dc48ab32a2f5d18527f5dae2962b64269a3a Status: Downloaded newer image for ubuntu:14.04 root@86451839d6be:/#
使用docker pull命令:
[root@kvm2 ~]# docker pull ubuntu:14.04 14.04: Pulling from library/ubuntu Digest: sha256:60840958b25b5947b11d7a274274dc48ab32a2f5d18527f5dae2962b64269a3a Status: Image is up to date for ubuntu:14.04 [root@kvm2 ~]#
4、删除镜像
镜像删除使用 docker rmi 命令,如下,
docker rmi ImageID
或者
docker rmi ImageName
说明:
ImageID :需要删除的镜像的Image ID。
ImageName:镜像的名称。
例如,
通过镜像名称删除镜像:
docker rmi ubuntu:14.04
通过Image ID删除镜像:
docker rmi 81b5c4e5c7a0
注意:通过ImageID删除镜像时,可以使用docker images命令查看Image ID。
5、docker images -q
命令仅输出返回镜像的Image ID。
例如,
[root@kvm2 ~]# docker images -q
13b66b487594
aeb6e1b699dc
ff4ee4caaa23
说明:
q:指示Docker命令返回唯一的Image ID。
6、docker inspect
docker inspect命令用于查看镜像或容器的详细信息。如下,
docker inspect
说明:
Repository:镜像的名称或ID。
例如,
[root@kvm2 ~]# docker inspect 13b66b487594
[
{
"Id": "sha256:13b66b487594a1f2b75396013bc05d29d9f527852d96c5577cc4f187559875d0",
"RepoTags": [
"ubuntu:14.04"
],
"RepoDigests": [
"ubuntu@sha256:60840958b25b5947b11d7a274274dc48ab32a2f5d18527f5dae2962b64269a3a"
],
"Parent": "",
"Comment": "",
"Created": "2021-03-25T22:33:44.754436368Z",
"Container": "a55677c29cfc1b4d4574b70df6fb6aa1db116fecd36b66d33ed480999a14037d",
"ContainerConfig": {
"Hostname": "a55677c29cfc",
"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\"]"
],
"Image": "sha256:8de4ecfd37404a523d0253873a2b15a274d3657e9f726b472eb82c32ffbc76f4",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"DockerVersion": "19.03.12",
"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"
],
"Image": "sha256:8de4ecfd37404a523d0253873a2b15a274d3657e9f726b472eb82c32ffbc76f4",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 196513448,
"VirtualSize": 196513448,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/d0ae424cdc59d024b1121a5f0d17a9673252c9b5fb91d83ac83fbdf8bafb4b51/diff:/var/lib/docker/overlay2/016e917db391292baa0e423bc28de5e22bb0ec1105881db26cd57d1a4ac78f4f/diff",
"MergedDir": "/var/lib/docker/overlay2/64e68dc48bbb5e76eeff2aac7a916790ced29baab9c9a8ea63ebcf46b77a59a3/merged",
"UpperDir": "/var/lib/docker/overlay2/64e68dc48bbb5e76eeff2aac7a916790ced29baab9c9a8ea63ebcf46b77a59a3/diff",
"WorkDir": "/var/lib/docker/overlay2/64e68dc48bbb5e76eeff2aac7a916790ced29baab9c9a8ea63ebcf46b77a59a3/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:f2fa9f4cf8fd0a521d40e34492b522cee3f35004047e617c75fadeb8bfd1e6b7",
"sha256:30d3c4334a2379748937816c01f5c972a8291a5ccc958d6b33d735457a16196e",
"sha256:83109fa660b2ed9307948505abd3c1f24c27c64009691067edb765bd3714b98d"
]
},
"Metadata": {
"LastTagTime": "0001-01-01T00:00:00Z"
}
}
]
7、镜像标签
使用docker tag 命令可以给镜像打标签,命令用法如下,
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]例如,
docker tag ubuntu ubuntu:v1注意:可以每开发一个版本打一个标签,如需恢复原来的版本,可以使用指定标签的镜像来创建容器。