在不同的客户端设备上使用相同的 Docker 机器

Using same Docker machine across different client devices

我们想建立一个 Docker 开发节点,我们团队中的任何人都可以在其中部署东西。

我使用 SSH 创建了一个新的 Docker 机器,如下所示:

docker-machine create \
    --driver generic \
    --generic-ip-address=xxx.xxx.xxx.xxx \
    --generic-ssh-user=myuser \
    mymachine

使用 docker-machine env mymachine,我设置了我的环境。但是另一个开发人员需要执行哪些步骤才能访问同一台机器?

不幸的是,没有 docker-machine add ... (https://github.com/docker/machine/issues/3212)

什么是目前最简单的 Dockeric 实现方式?

export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://xxx.xxx.xxx.xxx:2376"
export DOCKER_CERT_PATH="/Users/user/.docker/machine/machines/mymachine"
export DOCKER_MACHINE_NAME="mymachine"

但是证书呢?复制相同的证书还是为他生成新证书?

根据我的经验,在本地 运行 时,开发 docker 工作流程要愉快得多。您可以挂载文件系统以进行快速迭代。在构建图像时,复制上下文的时间大大减少。另外,在安装 docker 命令行时,您的团队也可以安装 docker 引擎。

但我知道您可能想要证明 docker 而不要求人们维护 VM 或在本地安装 - 等等实际答案:

What steps does another developer need to perform to have access to the same machine?

  1. 安装docker.
  2. 在环境中设置主机+证书。

来自 docker-machine env 的环境变量(以及那里引用的文件)就足够了。尽管这仍然会给您留下复制证书的问题 - 正如您在 github link.

中所讨论的那样

Copy the same certs over or generate new ones?

(基于 tls configuration)我相信 docker 守护程序只能支持一组证书。

What's the easiest and the current Docker'ic way of achieving [a shared machine]?

证书是为了您的安全而存在的,但可以将其禁用。如果您对本地网络安全有信心,并使用该服务进行开发 - 您可以让主机公开一个 http 端口。

这可以在创建时通过 docker-machine 完成:(这个问题的例子:

docker-machine create -d virtualbox --engine-env DOCKER_TLS=no --engine-opt host=tcp://0.0.0.0:2375 node1

一旦服务在禁用 TLS 的 tcp 端口上公开,任何人都可以从带有 -H 标志的 docker 命令行访问它。

docker -H xxx.xxx.xxx.xxx:2375 images

设置 DOCKER_HOST 环境变量将节省一些输入。