网络知识 娱乐 Docker 实战 Image 补充

Docker 实战 Image 补充

​​​​​​

作者:半身风雪
上一节: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

运行结果如下: