Docker 将堆栈部署到远程swarm

Docker 将堆栈部署到远程swarm,docker,docker-compose,dockerfile,docker-swarm,Docker,Docker Compose,Dockerfile,Docker Swarm,早上好, 我正在接近docker swarm,我很难找到一些信息。 我的目标是为我的swarm集群创建gitlab或travis部署,我使用docker swarm init命令创建了我的manager节点,并创建了docker注册表作为服务;如图所示 这是我非常简单的dockerfile FROM node:9.5.0 ADD . . RUN yarn install CMD [ "yarn", "start" ] 这是我的作文 version: '3' services: he

早上好,
我正在接近docker swarm,我很难找到一些信息。 我的目标是为我的swarm集群创建gitlab或travis部署,我使用docker swarm init命令创建了我的manager节点,并创建了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: .
从另一个非swarm服务器工作良好,我的图像已正确上传到注册表

因此,现在我认为我必须使用类似的方法部署堆栈(请记住,我正在从另一台服务器运行以下命令)

export DOCKER\u HOST=tcp://:
docker堆栈部署--编写文件docker-compose.yml healthcheck
但是swarm服务器拒绝了我,我不知道witch是正确的端口

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

我走对了吗?你能告诉我我没有找到的文件吗


提前感谢

您正在尝试访问远程
Docker守护进程
以推送您的
compose.yml
。但问题是默认情况下,
Docker守护进程
仅绑定到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
那么

并重新启动

service docker restart
如果不使用
TLS
保护守护进程,我不建议您进行此设置。如果您不使用
TLS
任何人都可以访问您的服务器并部署容器


希望有帮助

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

遵循规则


使用Docker Cloud很简单。

尝试使用
导出Docker\u主机=”ssh://user@服务器:22“

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