作者:半身风雪 上一节:Docker 示例更新 简介:我们花了6节来解释Docker 从本节开始,我将正式进入核心知识点、命令等内容Docker 学习的实战环节。
Docker 实战 Image 补充
从Docker Hub 现有有镜像
列出所有镜像
查看镜像配置信息
移除镜像
检查所有镜像操作命令
从Docker Hub 现有有镜像
Docker 镜像(image)它包含了程序代码和程序运行所依赖的所有环境。 Docker 镜像一般存放在镜像仓库服务中(Image Registry)默认的镜像仓库服务是Docker Hub。可制作、构建镜像,将镜像上传到镜像仓库服务,从其他地方从镜像仓库服务中拉取镜像。
从Docker Hub拉取 helloworld 镜像命令:
$ docker image pull library/hello-world
运行结果如下:
列出所有镜像
Docker 镜像(image)它包含了程序代码和程序运行所依赖的所有环境。 Docker 镜像一般存放在镜像仓库服务中(Image Registry)默认的镜像仓库服务是Docker Hub。 用户可以制作、构建镜像,将镜像上传到镜像仓库服务,从其他地方从镜像仓库服务中拉取镜像。
镜像的名字也叫镜像仓库的名字,英语是REPOSITORY
,所有镜像所有镜像的命令:
$ docker image ls
输出 hello-world 结果:
查看镜像配置信息
查看镜像配置信息的命令:
$ docker image inspect hello-world
上面的命令操作可以看到镜像启动后会立即执行的命令CMD:
[ { "Id": "sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412", "RepoTags": [ "hello-world:latest" ], "RepoDigests": [ "hello-world@sha256:13e367d31ae85359f42d637adf6da428f76d75dc9afeb3c21faea0d976f5c651" ], "Parent": "", "Comment": "", "Created": "2021-09-23T23:47:57.442225064Z", "Container": "8746661ca3c2f215da94e6d3f7dfdcafaff5ec0b21c9aff6af3dc379a82fbc72", "ContainerConfig": { "Hostname": "8746661ca3c2", "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 [\"/hello\"]" ], "Image": "sha256:b9935d4e8431fb1a7f0989304ec86b3329a99a25f5efdc7f09f3f8c41434ca6d", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": {} }, "DockerVersion": "20.10.7", "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": [ "/hello" ], "Image": "sha256:b9935d4e8431fb1a7f0989304ec86b3329a99a25f5efdc7f09f3f8c41434ca6d", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": null }, "Architecture": "amd64", "Os": "linux", "Size": 13256, "VirtualSize": 13256, "GraphDriver": { "Data": { "MergedDir": "/var/lib/docker/overlay2/cad20b84d6740bbb0dfbe96058268e56843e19e4703a1d328a730ad68605f0e7/merged", "UpperDir": "/var/lib/docker/overlay2/cad20b84d6740bbb0dfbe96058268e56843e19e4703ad328a730ad68605f0e7/diff",
"WorkDir": "/var/lib/docker/overlay2/cad20b84d6740bbb0dfbe96058268e56843e19e4703a1d328a730ad68605f0e7/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359"
]
},
"Metadata": {
"LastTagTime": "0001-01-01T00:00:00Z"
}
}
]
移除镜像
可以通过命令docker image rm
删除不用的镜像,我们先通过命令查看有哪些镜像。
$ docker image ls
可以看到我们当前所有的镜像:
如果镜像没有被启动过,直接可以使用下面的命令删除成功:(删除 docker/getting-started 镜像)
$ docker image rm cb90f98fd791
运行如下图:
但是如果镜像被启动了,就会报错:
我们可以通过docker ps
命令查看被启动过的镜像状态。
可以看到,其中
-
横向的红框是ID为
09d01ed9156b
的镜像启动后的container
(参考下一节)的状态 -
纵向的红框是所有启动的
container
的当前状态,可以看到图里的都处于Exited
的退出状态。
查看所有的镜像操作命令
除了上面介绍的一些命令,我们也可以查看 docker image
的所有命令:
$ docker image
运行结果如下: