在使用Docker时,我们从一个基本映像开始。我们启动它,创建更改,这些更改被保存在图层中形成另一个图像。
因此,最终我为我的PostgreSQL实例和我的web应用程序提供了一个图像,对这些图像的更改将持续保存。
什么是容器?
在使用Docker时,我们从一个基本映像开始。我们启动它,创建更改,这些更改被保存在图层中形成另一个图像。
因此,最终我为我的PostgreSQL实例和我的web应用程序提供了一个图像,对这些图像的更改将持续保存。
什么是容器?
当前回答
我认为最好一开始就解释清楚。
假设你运行命令docker run hello-world。会发生什么呢?
它调用Docker CLI,负责接收Docker命令并转换为调用Docker服务器命令。一旦Docker服务器得到一个运行映像的命令,它就会检查映像缓存中是否有这样一个名称的映像。
假设hello-world不存在。Docker服务器访问Docker Hub (Docker Hub只是一个免费的图像存储库)并询问,嘿,Hub,你有一个名为hello-world的图像吗? 枢纽响应-是的,我有。那就请给我吧。下载过程开始了。一旦Docker镜像下载完成,Docker服务器就会将其放入镜像缓存中。
所以在我们解释Docker镜像和Docker容器是什么之前,让我们先来介绍一下你电脑上的操作系统以及它是如何运行软件的。
例如,当你在电脑上运行Chrome时,它会调用操作系统,操作系统自己会调用内核并请求,嘿,我想运行这个程序。内核设法从您的硬盘运行文件。
现在假设你有两个程序,Chrome和Node.js。Chrome需要Python版本2才能运行,Node.js需要Python版本3才能运行。如果您的计算机上只安装了Python v2,则只能运行Chrome。
为了使这两种情况都能工作,您需要以某种方式使用称为名称空间的操作系统特性。命名空间是一种特性,它使您有机会隔离进程、硬盘驱动器、网络、用户、主机名等。
当我们讨论映像时,我们实际上是在讨论文件系统快照。映像是一个物理文件,其中包含构建特定容器的方向和元数据。容器本身是一个映像的实例;它使用名称空间隔离硬盘驱动器,该名称空间仅对该容器可用。因此容器是一个进程或一组进程,它将分配给它的不同资源分组。
其他回答
Docker的核心概念是使创建“机器”变得容易,在这种情况下,机器可以被认为是容器。容器有助于重用性,允许您轻松地创建和删除容器。
图像描述了容器在每个时间点上的状态。所以基本的工作流程是:
创建映像 启动容器 对容器进行更改 将容器重新保存为图像
Image相当于OOP中的类定义,层是该类的不同方法和属性。
容器是图像的实际实例化,就像对象是实例化或类的实例一样。
A docker image or a container image in general is a software package which wraps your application executable, dependencies, configurations and application runtime into a secure and immutable unit. When I am saying application executable it differs from application to application. For example if it is a java application it would a jar file, for node application may be a js file. Similarly the application runtime depends on your application itself. For java application it will be JRE, for node application it is node binaries.
您可以根据映像清单文件中提供的说明构建映像。Dockerfile)。构建映像后,可以将其存储在本地或一些容器映像存储库(如hub.docker.com)中。
当您希望将映像作为应用程序工作负载运行时,您可以启动一个需要映像的容器。容器是映像的运行时实例。
要构建一个映像,存储它并将其作为容器运行,你需要一个名为容器运行时的软件,比如Docker。这些容器运行时符合Open container Initiative为映像创建和容器运行提供的标准。
虽然将容器看作一个运行的映像是最简单的,但这并不十分准确。
An image is really a template that can be turned into a container. To turn an image into a container, the Docker engine takes the image, adds a read-write filesystem on top and initialises various settings including network ports, container name, ID and resource limits. A running container has a currently executing process, but a container can also be stopped (or exited in Docker's terminology). An exited container is not the same as an image, as it can be restarted and will retain its settings and any filesystem changes.
图像之于类就像容器之于对象。
容器是图像的实例,就像对象是类的实例一样。