将堆栈部署到远程群集

时间:2018-02-11 11:02:13

标签: docker docker-compose dockerfile docker-swarm

早上好,
我现在正在接近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

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

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

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

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

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

我走对了路?你能给我一些我没找到的文件吗?

提前致谢

3 个答案:

答案 0 :(得分:2)

您正试图通过遥控器Docker Daemon推送compose.yml。但问题是默认情况下Docker Daemon仅绑定到unix socket。

为此,在远程服务器上,您必须更改/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,任何人都可以联系您的服务器并部署容器。

希望它有所帮助!

答案 1 :(得分:1)

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

关注documentation for enabling TLS on the remote daemon

使用Docker Cloud轻松"bring your own swarm" feature to manage TLS for you

答案 2 :(得分:0)

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