【问题标题】:deploy stack to remote swarm将堆栈部署到远程集群
【发布时间】:2018-02-11 11:02:12
【问题描述】:

早上好,
我现在正在接近 docker swarm,但我无法找到一些信息。 我的目标是为我的 swarm 集群创建一个 gitlab 或 travis 部署,我使用 docker swarm init 命令创建了我的管理器节点,并创建了一个 docker 注册表作为服务;如official documentation所示。

这是我非常简单的 dockerfile

FROM node:9.5.0

ADD . .

RUN yarn install

CMD [ "yarn", "start" ]

这是我的作曲

version: '3'

services:
  healthcheck:
    image: <registry_url>:<registry_port>/healthcheck
    build: .

启动命令

docker-compose push

从另一个工作正常的非集群服务器,我的图像正确上传到注册表。

所以现在我想我必须用这样的东西来部署我的堆栈(请记住,我正在从另一台服务器运行以下命令)

export DOCKER_HOST=tcp://<my_manager_url>:<my_manager_port>
docker stack deploy --compose-file docker-compose.yml healthcheck

但是 swarm 服务器拒绝了我,我不知道 wwitch 是正确的端口。

我认为它必须以某种方式进行配置,但我没有找到任何关于它的信息。

我走对了吗?你能推荐我没有找到的文档吗?

提前致谢

【问题讨论】:

    标签: docker docker-compose dockerfile docker-swarm


    【解决方案1】:

    您正在尝试访问远程Docker Daemon 以推送您的compose.yml。但问题是默认情况下Docker Daemon 仅绑定到 unix 套接字。

    为此,您必须在远程服务器上更改/usr/lib/systemd/system/docker.service 文件并将ExecStart 更改为...

    ExecStart=/usr/bin/docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
    

    那么,

    systemctl daemon-reload
    

    然后重启

    service docker restart
    

    如果不使用TLS 保护守护程序,我不会向您推荐此设置。如果您不使用TLS,任何人都可以联系您的服务器并部署容器。

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

      是的,就像@Ahab 最后所说的那样,您不想在 docker 服务上启用 TCP,除非它使用 TLS 保护。两种选择:

      关注documentation for enabling TLS on the remote daemon

      使用 Docker Cloud 的简单"bring your own swarm" feature to manage TLS for you

      【讨论】:

        【解决方案3】:

        尝试使用export DOCKER_HOST="ssh://user@server:22"

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-11-08
          • 1970-01-01
          • 2017-11-08
          • 2016-11-24
          • 2021-01-26
          • 2018-02-20
          • 1970-01-01
          相关资源
          最近更新 更多