作者:半身风雪
上一节: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/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
运行结果如下: