docker - 如何在不同的机器上托管 Docker 守护进程和 Docker 客户端

标签 docker devops

我想在保留服务器中运行所有 Docker 容器,并且我想从我的本地计算机管理服务器。我们有什么办法可以做到这一点?

提前致谢。

最佳答案

docker documentation 中有详细说明.默认情况下,Docker 通过非联网的 Unix 套接字(未公开)运行。但它也可以选择使用 HTTP 套接字进行通信。如果你想保证这个安全,你需要配置 TLS。

我可以从文档页面复制所有命令,但我认为它解释得很好。

简而言之:

  • 您必须在您的服务器上创建 CA 私钥和公钥(其中
    守护进程正在运行)。
  • 您可以从 CA 创建服务器 key 和 csr。
  • 使用您的 CA
  • 签署公钥
  • 从扩展配置文件生成签名证书。
  • 在客户端计算机(您的笔记本电脑)上创建客户端 key 和证书签名请求 (csr)
  • 在客户端的扩展配置文件中使 key 适合身份验证
  • 生成签名证书(并删除签名请求)
  • 使用 chmod -v 0400 保护您的 key 文件

  • 现在,您可以让 Docker 守护进程只接受来自提供 CA 信任的证书的客户端的连接:
    $ dockerd --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem \
      -H=0.0.0.0:2376
    

    在您的客户端上,您可以使用以下方式进行连接:
    docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem \
      -H=$HOST:2376 version
    

    其中 $HOST 是运行守护程序的机器的 DNS 或 IP

    关于docker - 如何在不同的机器上托管 Docker 守护进程和 Docker 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50669275/

    相关文章:

    gcc - 将 GCC 编译器安装到 Docker 容器上

    mysql - 如何在 Docker 镜像中设置 "undeclare"卷?

    azure - 如何在 Azure DevOps 中访问其他组织的存储库?

    javascript - 如何通过 CLI 自定义命令运行 Node 脚本?

    docker -/usr/bin/被授权为Docker首选项中的卷共享的默认位置?

    Docker Django GPIO Raspbian 克星

    docker - 如何访问 Docker 桌面使用的 wsl2?

    docker - Bluemix 开发运营 : Building a project with private git submodules

    mysql - 无法连接到在 kubernetes 部署中运行的 mysql 服务器公开为负载均衡器

    linux - 如何在docker中监听端口?