gpt4 book ai didi

docker - 连接到远程 docker 主机/部署堆栈

转载 作者:行者123 更新时间:2023-12-01 10:25:04 24 4
gpt4 key购买 nike

我创建了一个 docker 堆栈来部署到一个 swarm 中。现在我有点困惑将它部署到真实服务器的正确方法是什么?

当然,我可以

  • scp我的 docker-stack.yml文件到我的集群节点
  • ssh进入节点
  • 运行 docker stack deploy -c docker-stack.yml stackname

  • 所以有 docker-machine我想的工具。
    我试过
    docker-machine -d none --url=tcp://<RemoteHostIp>:2375 node1

    如果您在没有 TLS 的情况下打开端口,什么似乎才有效?
    我收到以下信息:
    $ docker-machine env node1
    Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.178.49:2375": dial tcp 192.168.178.49:2375: connectex: No connection could be made because the target machine actively refused it.
    You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
    Be advised that this will trigger a Docker daemon restart which might stop running containers.

    我已经尝试生成证书并将其复制到主机:
     ssh-keygen -t rsa
    ssh-copy-id myuser@node1

    然后我跑了
    docker-machine --tls-ca-cert PathToMyCert --tls-client-cert PathToMyCert create -d none --url=tcp://192.168.178.49:2375 node1 

    结果如下:
     $ docker-machine env node1
    Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "node1:2375": There was an error reading certificate
    You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
    Be advised that this will trigger a Docker daemon restart which might stop running containers.

    我也用通用驱动程序试过了
    $ docker-machine create -d generic --generic-ssh-port "22" --generic-ssh-user "MyRemoteUser" --generic-ip-address 192.168.178.49 node1
    Running pre-create checks...
    Creating machine...
    (node1) No SSH key specified. Assuming an existing key at the default location.
    Waiting for machine to be running, this may take a few minutes...
    Detecting operating system of created instance...
    Waiting for SSH to be available...
    Detecting the provisioner...
    Error creating machine: Error detecting OS: OS type not recognized

    如何使用 TLS 正确添加带有 docker-machine 的远程 docker 主机?
    或者是否有更好的方法将堆栈部署到服务器/投入生产?

    我经常读到你不应该公开 docker 端口,但不应该公开如何去做。我不敢相信他们没有提供一种简单的方法来做到这一点。

    更新与解决方案

    我认为这两个答案都有资格。
    我找到了 Deploy to Azure Offical Doc (AWS 也是如此)。
    @Tarun Lalwani 的回答为我指明了正确的方向,这几乎是官方解决方案。这就是我接受他的回答的原因。

    对我来说,以下命令有效:
    ssh -fNL localhost:2374:/var/run/docker.sock myuser@node1

    然后你可以运行:
    docker -H localhost:2374 stack deploy -c stack-compose.yml stackname

    或者
    DOCKER_HOST=localhost:2374
    docker stack deploy -c stack-compose.yml stackname

    @BMitch 的回答也是有效的,他提到的安全问题不应被忽视。

    更新 2

    @bretf 的答案是连接到您的群的绝佳方式。特别是如果你有不止一个。它仍然是测试版,但适用于可在互联网上使用且没有 ARM 架构的集群。

    最佳答案

    即使我正在考虑 TLS,我也不想打开/公开 docker 端口。我宁愿使用SSH隧道然后进行部署

    ssh -L 2375:127.0.0.1:2375 myuser@node1

    然后使用
    DOCKER_HOST=tcp://127.0.0.1:2375
    docker stack deploy -c docker-stack.yml stackname

    关于docker - 连接到远程 docker 主机/部署堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48025676/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com