想要了解Docker,那么必然要了解它的原理,架构。否则流于表面,很难去真正的认识,理解它的思想。Docker使用客户端 - 服务器架构。Docker客户端与Docker守护进程通信,后者负责构建,运行和分发Docker容器。Docker客户端和守护程序可以在同一系统上运行,也可以将Docker客户端连接到远程Docker守护程序。通过Docker官方文档,我们可以大概的了解下Docker的组件、架构等基础信息。

Docker的核心组件包括:

  1. Docker 客户端 - Client
  2. Docker 服务器 - Docker daemon
  3. Docker 镜像 - Image
  4. Docker 注册中心 - Registry
  5. Docker 容器 - Container(镜像的运行实例)

Docker的架构:
Docker - 核心组件 - 图1

一、 Docker 客户端

最常用的 Docker 客户端是 docker 命令。通过 docker 我们可以方便地在 Host 上构建和运行容器。

二、 Docker 服务器

Docker daemon 是服务器组件,以 Linux 后台服务的方式运行,它运行在Docker host 上,负责创建、运行、监控容器,构建、存储镜像。

三、 Docker 镜像

Docker 镜像就像一个只读模板,通过它可以创建 Docker 容器。

四、Docker 容器

Docker 容器就是 Docker 镜像的运行实例。我们可以通过 CLI(docker)或是 API 启动、停止、移动或删除容器。默认情况下,容器与其他容器及其主机相对隔离。至于命令行的记忆,我觉得也不需要刻意记着,只要每天在用,就不会忘记。否则半年不用,也很难在想起来。

五、Docker 注册中心

Registry 是存放 Docker 镜像的仓库,Registry 分私有和公有两种。 Docker Hub(https://hub.docker.com/) 是默认的 Registry。当然,我们也可以使用私有的 Registry。当然这个目前我还未涉及到这一块。到时候有需要了,我们在一起学习吧~

  • docker pull 命令可以从 Registry 下载镜像。
  • docker run 命令则是先下载镜像(如果本地仓库没有),然后再启动容器。

六、容器启动

一、启动过程

我们以hello-word容器为例,看下容器的启动过程到底是啥样的。

  1. $ sudo docker run hello-world
  1. Docker 客户端执行 docker run 命令。
  2. Docker daemon 发现本地没有 hello-world 镜像。
  3. daemon 从 Docker Hub 下载镜像。
  4. 下载完成,镜像 hello-world 被保存到本地。
  5. Docker daemon 启动容器。

二、基本命令

使用 docker images 命令,可以查看本地的镜像

Docker - 核心组件 - 图2

使用 docker ps 命令,可以查看本地的正在运行的容器。docker ps -a ,则是查看所有的容器。

Docker - 核心组件 - 图3