如何正确的使用码头工人的机器

介绍

本篇文章给大家分享的是有关如何正确的使用码头工人的机器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

码头工人是一个客户机-服务器架构的应用,人家是有官称的:码头工人Engine.Docker只是大家对码头工人引擎的昵称,当然码头工人还有其他的意思,比如一家公司的名称。

提到码头工人我们必须要知道它包含了三部分内容:

<李>

码头工人守护进程

<李>

一套与码头工人守护进程交互的REST API

<李>

一个命令行客户端

下图很清晰的展示了它们之间的关系:

如何正确的使用码头工人机器”> </p> <p>码头工人机则是一个安装和管理码头工人的工具。它有自己的命令行工具:docker-machine。</p> <h4>码头工人守护进程插座</h4> <p>既然码头工人客户端要和码头工人守护进程通过REST API通信,那就让我们看看它们可以采用的方法有哪些:</p> <ol类= <李>

Unix socket

<李>

Systemd插座激活

<李>

Tcp

我们可以简单的把1和2理解成一种方式,就是同一台主机上的进程间通信。至于3则很好理解:通过Tcp协议进行跨网络的通信。

既然1和2用于同一台机器上的进程间通信,那么我们可以猜想:安装在同一主机上的码头工人客户端和码头工人守护进程就是通过这种方式来通信的。事实也正是如此,我们可以查看安装码头工人时默认添加的码头工人守护进程启动配置,打开文件/etc/systemd/system/multi-user.target.wants/码头工人。service:

如何正确的使用Docker Machine

图中的 -H 用来指定 Docker Daemon 监听的 socket,此处指定的类型为 system socket activation。使用类型 1 和 2 进行通信需要进程具有 root 权限。这也是 Docker 安装过程中会自动创建一个具有 root 权限的用户和用户组的主要原因。新创建的用户和用户组名称为 docker,建议大家把需要操作 Docker 的用户都加入到这个组中,否则当你执行命令时就会碰到下图显示的问题:

如何正确的使用Docker Machine

我们还可以同时指定多个 -H 参数让 Docker daemon 同时监听不同的 socket 类型。比如要添加对 TCP 端口 2376 的监听就可以使用下面的命令行参数:

$ sudo dockerd -H fd:// -H tcp://0.0.0.0:2376

运行上面的命令,然后查看本机监听的端口:

如何正确的使用Docker Machine

此时我们就可以从远程主机上的 Docker 客户端访问这部主机的 2376 端口了。

DOCKER_HOST 环境变量

Docker 客户端默认的配置是访问本机的 Docker daemon,当你指定了 DOCKER_HOST 变量后,Docker 客户端会访问这个变量中指定的 Docker daemon。让我们回顾一下 docker-machine env 命令:

如何正确的使用Docker Machine

执行的 $ eval $(docker-machine env krdevdb) 命令就是在设置 DOCKER_HOST 环境变量。

解决安全问题

我们的 Docker daemon 监听了 tcp 端口,糟糕的是此时我们没有做任何的保护措施。因此任何 Docker 客户端都可以通过 tcp 端口与我们的 Docker daemon 交互,这显然是无法接受的。解决方案是同时启用 Docker daemon 和 Docker 客户端的 TLS 证书认证机制。这样 Docker daemon 和 Docker 客户端之间的通信会被加密,并且只有安装了特定证书的客户端才能够与对应的 Docker daemon 交互。

至此本文的铺垫部分终于结束了,接下来我们将讨论 Docker Machine 相关的内容。

Docker Machine create 命令

根据 Docker Machine 驱动的不同,create 命令执行的操作也不太一样,但其中有两步是我们在这里比较关心的:

docker-machine 会在您指定的主机上执行下面的操作:

  1. 安装 Docker,并进行配置。

  2. 生成证书保护 Docker 服务的安全。

配置 Docker daemon

Docker 的安装过程并没有什么秘密,这里不再赘述。我们重点关注 Docker daemon 的配置。仔细观察我们会发现,通过 docker-machine 安装的 Docker 在/etc/systemd/system 目录下多出了一个 Docker 相关的目录:docker.service.d。这个目录中只有一个文件十台。相依:

如何正确的使用码头工人的机器