作者:半身风雪
上一节:Docker 示例更新
简介:前面我们总共花费了6节内容,来讲解Docker 的核心知识点,命令等内容,从本节开始,我将和大家一起,正式进入Docker 学习的实战环节。
Docker 实战 Image 补充
从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/cad20b84d6740bbb0dfbe96058268e56843e19e4703a1d328a730ad68605f0e7/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
运行结果如下:
版权归原作者 半身风雪 所有, 如有侵权,请联系我们删除。