将堆栈部署到远程集群

问题描述 投票:0回答:4

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

这是我非常简单的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

但是群服务器拒绝了我,我不知道女巫是正确的端口。

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

我走的路是对的吗?您能给我推荐我没有找到的文档吗?

提前致谢

docker docker-compose dockerfile docker-swarm
4个回答
6
投票

您正在尝试使用遥控器

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 的保护。两种选择:

按照文档在远程守护程序上启用 TLS

使用 Docker Cloud 的简单 “自带 Swarm”功能来为您管理 TLS


1
投票

尝试使用

export DOCKER_HOST="ssh://user@server:22"


0
投票

以下命令会将 compose 文件作为堆栈部署到远程主机。在运行命令之前,远程主机必须是已知主机。

docker -H ssh://<remote-host-credentials> stack deploy -c <path-to-compose-file> <stack-name>
© www.soinside.com 2019 - 2024. All rights reserved.