Docker中容器和图像的区别是什么?在Docker入门教程中,这两个术语都被使用了,但我不明白其中的区别。

谁能给我点灯?


当前回答

使用面向对象编程的类比,Docker镜像和Docker容器之间的区别就像类和对象之间的区别一样。对象是类的运行时实例。类似地,容器是映像的运行时实例。

对象在实例化时只创建一次。类似地,容器可以运行也可以停止。容器是根据映像创建的,尽管情况可能并不总是如此。下面的例子创建一个Apache服务器镜像,运行镜像,列出镜像,然后列出容器:

创建一个Dockerfile,内容如下: 从httpd: 2.4 安装Apache服务器 Sudo docker build -t my-apache2。 运行映像 Sudo docker运行-it——rm——命名my-running-app my-apache2 列出Docker映像 Sudo docker图像 列出正在运行的Docker容器 码头工人ps 列出所有容器 Docker ps a 列出最新创建的容器 Docker ps -l

其他回答

图片[像vm]

用于创建容器的只读模板 由您或其他Docker用户构建 存储在Docker Hub或本地注册表中

容器[像运转的机器]

隔离应用平台 包含运行应用程序所需的所有内容 基于图像

使用面向对象编程的类比,Docker镜像和Docker容器之间的区别就像类和对象之间的区别一样。对象是类的运行时实例。类似地,容器是映像的运行时实例。

对象在实例化时只创建一次。类似地,容器可以运行也可以停止。容器是根据映像创建的,尽管情况可能并不总是如此。下面的例子创建一个Apache服务器镜像,运行镜像,列出镜像,然后列出容器:

创建一个Dockerfile,内容如下: 从httpd: 2.4 安装Apache服务器 Sudo docker build -t my-apache2。 运行映像 Sudo docker运行-it——rm——命名my-running-app my-apache2 列出Docker映像 Sudo docker图像 列出正在运行的Docker容器 码头工人ps 列出所有容器 Docker ps a 列出最新创建的容器 Docker ps -l

容器是基于图像的。需要将图像传递给Dockers run命令。

例子:

BusyBox映像

http://i.stack.imgur.com/eK9dC.png

这里我们指定一个名为busybox的映像。Docker在本地没有这个映像,而是从公共注册表中获取它。

注册表是Docker镜像的目录,Docker客户端可以与之通信并从中下载镜像。一旦图像被拉出,Docker启动一个容器并执行echo hello world命令。

映像是根文件系统更改和容器运行时中使用的相应执行参数的有序集合。映像是只读的。

https://docs.docker.com/glossary/?term=image

容器是映像的活动(退出时为非活动)状态实例化。

https://docs.docker.com/glossary/?term=container

The official difference is that the container is the last layer which is writable whereas the layers below are only readable and they belong to your image. The intuitive difference is that the docker instance is the instance virtualized by your docker daemon and the running your image, it operates within an isolated section of your kernel (this process is hidden from you). The image however is static, it doesn't run, it is just a pile of layers (static files). If we would relate this paradigm to object-oriented programming, the image is your class definition, whereas your docker instance is your class spawned object that resides in memory.

我写了一个教程来加强你的docker知识直觉:

http://javagoogleappspot.blogspot.com/2018/07/docker-basics.html