早上好,
我现在正在接近 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 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
,任何人都可以访问您的服务器并部署容器。
希望有帮助!
是的,就像 @Ahab 最后所说的那样,你不想在 docker 服务上启用 TCP,除非它受到 TLS 的保护。两种选择:
使用 Docker Cloud 的简单 “自带 Swarm”功能来为您管理 TLS 。
尝试使用
export DOCKER_HOST="ssh://user@server:22"
以下命令会将 compose 文件作为堆栈部署到远程主机。在运行命令之前,远程主机必须是已知主机。
docker -H ssh://<remote-host-credentials> stack deploy -c <path-to-compose-file> <stack-name>