如何远程连接docker swarm?

Nav*_*eep 10 docker docker-swarm docker-swarm-mode docker-secrets

是否可以从我的本地mac在云托管的docker swarm集群上执行命令?如果有,怎么样?

我想执行命令,例如从我的本地执行docker swarm:

docker create secret my-secret <address to local file>
docker service create --name x --secrets my-secret image
Run Code Online (Sandbox Code Playgroud)

Mar*_*ira 9

这是在远程 docker 引擎上运行命令的最简单方法:

docker context create --docker host=ssh://myuser@myremote myremote
docker --context myremote ps -a
docker --context myremote create secret my-secret <address to local file>
docker --context myremote service create --name x --secrets my-secret image
Run Code Online (Sandbox Code Playgroud)

或者

docker --host ssh://myuser@myremote ps -a
Run Code Online (Sandbox Code Playgroud)

您甚至可以将远程上下文设置为默认值并像在本地一样发出命令:

docker context use myremote
docker ps # lists remote running containers
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您甚至不需要安装 docker 引擎,只需安装docker-ce-cli.

您需要使用基于密钥的身份验证来完成此工作(您应该已经在使用它)。其他选项包括设置基于 tls 证书的套接字或 ssh 隧道。

另外,请考虑设置ssh 控制套接字以避免对每个命令重新进行身份验证,这样您的命令将运行得更快,因为它是本地的。

  • 或者甚至更好:“export DOCKER_HOST=ssh://myuser@myremote”,然后照常使用 docker 命令。 (3认同)

Nav*_*eep 8

可以在这里找到问题的答案.

需要为ubuntu机器做的是在路径中定义daemon.json文件,/etc/docker其中包含以下内容:

  {
    "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
  }
Run Code Online (Sandbox Code Playgroud)

上述配置是不安全的,如果服务器是公共托管的,则不应使用此配置.

对于安全连接,请使用以下配置

{
  "tls": true,
  "tlscert": "/var/docker/server.pem",
  "tlskey": "/var/docker/serverkey.pem",
  "hosts": ["tcp://x.x.x.y:2376", "unix:///var/run/docker.sock"]
}
Run Code Online (Sandbox Code Playgroud)

如@BMitch所述,可以在此处找到生成证书的详细信息.