Docker的介绍
前言
Docker是一个用于开发、发布和运行应用程序的开放平台。Docker使你能够将你的应用程序从你的基础设施中分离出来,这样你就可以快速地交付软件。使用Docker,你可以像管理应用一样管理你的基础设施。通过利用Docker快速发布、测试和部署代码的方法,您可以显著减少编写代码和在生产环境中运行代码之间的延迟。
Docker的架构
Docker采用client-server
架构。Docker客户端与Docker守护进程对话,守护进程承担构建、运行和分发Docker容器的繁重工作。Docker客户端和守护进程可以运行在同一个系统上,或者你可以连接一个Docker客户端到一个远程Docker守护进程。Docker客户端和守护进程通过UNIX套接字或网络接口使用REST API进行通信。另一个Docker客户端是Docker Compose,它允许你使用由一组容器组成的应用程序。
Docker守护进程(Docker daemon)
Docker守护进程(dockerd
)监听Docker API请求,并管理Docker对象,如images
,containers
,networks
和volumes
。守护进程也可以与其他守护进程通信来管理Docker服务。
Docker客户端(Docker client)
Docker客户端(Docker)是许多Docker用户与Docker交互的主要方式。当你使用像docker run
这样的命令时,客户端将这些命令发送给dockerd
,由dockerd
执行它们。docker命令使用docker API。Docker客户端可以与多个守护进程通信。
Docker注册表(Docker registries)
Docker注册表存储Docker镜像。Docker Hub是一个任何人都可以使用的公共注册中心,默认情况下,Docker被配置为在Docker Hub上查找镜像。您甚至可以运行自己的私有注册表。
当你使用docker pull
或docker run
命令时,所需的镜像会从你配置的注册表中提取出来。当你使用docker push
命令时,你的镜像会被推送到你配置的注册表中。
Docker对象(Docker objects)
当你使用Docker时,你是在创建和使用images
,containers
,networks
,volumes
,plugins
和其他对象。这里介绍两个比较常用且重要的对象。
镜像(images)
镜像是一个只读的模板,带有创建Docker容器的指令。通常,一个镜像基于另一个镜像,并带有一些额外的定制。例如,您可以构建一个基于ubuntu镜像的镜像,但要安装Apache web服务器和您的应用程序,以及运行应用程序所需的配置细节。
您可以创建自己的镜像,也可以只使用他人创建并在注册表中发布的镜像。要构建自己的镜像,您需要创建一个Dockerfile
,其中包含一个简单的语法,用于定义创建和运行镜像所需的步骤。Dockerfile
中的每条指令都在图像中创建一个层。当你改变Dockerfile
并重建镜像时,只有那些已经改变的层才会被重建。与其他虚拟化技术相比,镜像之所以如此轻巧、小巧和快速,部分原因就在于此。
容器(containers)
容器是镜像的一个可运行实例。你可以使用Docker API或CLI创建、启动、停止、移动或删除容器。您可以将容器连接到一个或多个网络,为其附加存储,甚至根据其当前状态创建一个新镜像。
默认情况下,容器与其他容器及其主机相对隔离。您可以控制容器的网络、存储或其他底层子系统与其他容器或主机之间的隔离程度。
容器由其镜像以及在创建或启动时提供给它的任何配置选项定义。当容器被移除时,没有存储在持久存储中的任何对其状态的更改都将消失。