【问题标题】:Managing remote docker machines from multiple development machines从多台开发机器管理远程 docker 机器
【发布时间】:2015-05-13 01:53:45
【问题描述】:

使用 docker-machine 命令从一个开发人员工作站创建的 docker 机器是否可以从另一个工作站进行管理。我不是在寻找涉及 docker swarm 的解决方案,而只是在寻找 docker machine。

据我了解,当 docker-machine 在 AWS EC2 等远程环境上创建机器时,它会创建密钥和证书,然后用于与机器进行基于 TLS 的通信。因此,理论上如果我将这些密钥和证书复制到另一台开发人员机器上,我应该能够连接到该远程 docker 机器。

但是,我想知道这是否是完成我想做的事情的预期方法。 IMO 这将是大多数 docker 社区可能面临的情况,因为多个团队成员将需要共享和管理同一个远程 docker 机器。

非常感谢您提供有关此问题的任何指导。

【问题讨论】:

  • 有什么理由需要共享 docker 主机进行开发?每个开发人员都有自己的 docker host vm 进行开发更容易,只需选择更便宜的实例类型并确保在不使用时销毁/停止实例
  • 感谢您的回复。我的意图不仅仅是在产品的开发阶段,而是部署到生产阶段。一旦从工作站创建了远程 docker 机器,我们如何从另一个工作站/构建机器远程管理该 docker 机器?
  • 你有没有设法让它发挥作用?

标签: docker docker-machine


【解决方案1】:

通过使用基于 TLS 的通信,docker 正在利用双向 SSL 验证。换句话说,客户端不仅验证服务器,而且反过来验证服务器。通过创建启用了 TLS 的 docker 机器,您将成为自己的证书颁发机构 (CA),因此您负责管理 SSL 证书。 Docker 机器在幕后执行此操作,但我相信您可以手动设置自签名 CA 并重新指向 Docker 以使用您设置的证书和密钥。因此,与其向所有开发人员工作站共享单个证书和密钥,不如为每个由 CA 私钥签名的开发人员颁发唯一证书和私钥。唯一必须由所有人共享的是 CA 证书,它是公开的。

这样做的好处是,您可以在开发人员离开后撤销证书,尽管这对于自签名证书很困难,并且它允许您从日志中检查谁做了什么。

Docker TLS setup.

Becoming your own CA tutorial and certificate revocation

【讨论】:

  • 啊,是的 :) 对于担心在最新版本的 Docker 引擎中管理远程 Docker 主机的人来说,这是一个很好的信息! TL;博士; SSL 安全 :)
  • 感谢@Daniel 的解释。这正是我一直在寻找的。我仍然很惊讶 docker 没有包含 docker-machine 的子命令来完成同样的任务。
  • @number5 提出的上述问题让我想知道 docker 机器是否是错误的部署方式?但令我震惊的是,我应该能够将证书从~/.docker/machine/certs~/.docker/machine/machines/... 复制到另一台机器上,对吧?我是否错过了一些会使这成为不安全的事情的事情?我避免复制 default,因为它包含整个 boot2docker ISO。
  • 包含一个共享 Docker 机器实例的示例命令序列会非常有用。
【解决方案2】:

有一个外部工具可以导入/导出 docker-machines:machine-share

machine-export <machine-name>
>> exported to <machine-name>.zip
machine-import <machine-name>.zip
>> imported

顺便说一句,我认为 Daniel 的解决方案非常出色,但需要对工具/工作流程进行大量投资。 machine-export 在 95% 的情况下应该足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 2012-08-01
    • 1970-01-01
    相关资源
    最近更新 更多