Docker基本概念
1 Docker定义
官方文档中的描述是“Docker is an open platform for developing, shipping, and running applications”,即docker是一个用于开发、发布和运行应用程序的开放平台。这意味着它可以将应用程序与基础架构(即本机环境)分离开,且易于管理,从而减少代码编写与运行之间的延迟。
2 Docker架构
Docker使用client/server构架,具体如下所示。
具体地:
(1)The Docker daemon
Docker 守护进程(dockerd)侦听 Docker API 请求并管理 Docker 对象,如映像、容器、网络和卷。它还可以与其他守护进程通信以管理 Docker 服务。
(2)The Docker client
Docker客户端(docker)是用户与docker交互的方式,当用户运行docker命令时,客户端会将此命令发送给dockerd,且其可以与多个守护进程进行通信。client使用REST API、UNIX 套接字或网络接口来与守护进程docker deamon(它负责构建、运行和分发 docker 容器)进行通信。
(3)Docker Desktop
Docker 桌面是一款适用于 Mac、Windows 或 Linux 环境的易于安装的应用程序,使用户能够构建和共享容器化应用程序和微服务。它包括Docker daemon (dockerd), the Docker client (docker), Docker Compose, Docker Content Trust, Kubernetes, and Credential Helper。
(4)Docker registries
Docker registries用于存储docker镜像(images)。 Docker Hub是一个公共registries,任何人都可以使用;docker会在Hub中想找相应镜像。使用“docker pull"或者”docker run"命令可以从特定registry是拉取镜像,"docker push"命令可将镜像推入特定registry。
(5)Docker objects
使用docker时,会创建镜像、容器、网络、卷、插件和其他对象,Docker objects对它们作部分描述。
3 关键概念
3.1 镜像image
镜像是一个只读的指令模板,它用于创建docker容器。一个镜像通常基于另一个镜像,只不过增加了额外设置。用户可以定义自己的镜像,也可以从registries中获取别人定义好的镜像。
3.2 容器container
docker提供了一个松散的、独立环境-容器(container)以打包和运行应用程序。容器的独立性与安全性使得用户可以在本机上运行多个容器;轻量级容器包含运行应用程序所需的所有内容,故用户无需在主机上安装相关内容。
容器是镜像的运行实例,用户可以使用docker API及CLI对容器进行创建、删除、移动、启动和停止操作。用户可以将容器连接到一个或多个网络,进行存储,甚至根据其当前状态创建新映像。容器由其镜像以及用户在创建或启动容器时提供的配置选项来定义。删除容器后,未存储在持久性存储中的对其状态所做的任何更改都将消失。
至此,Docker的基本概念已叙述完毕。