早上好,
我现在正在接近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服务器拒绝我,我不知道女巫是正确的端口。
我认为必须以某种方式进行配置,但我还没有找到任何相关内容。
我走对了路?你能给我一些我没找到的文件吗?
提前致谢
答案 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"