运行 docker 通过 ssh 在远程机器上执行命令

Running docker commands on remote machine through ssh

我有两台机器:

我希望能够在我的 Ubuntu 工作站上通过 ssh 从 MacOS 运行 docker 命令。 Docker 在 Ubuntu 上执行 运行ning 命令时工作正常。 SSH 工作正常(基于实体保存的密钥)。

我试过创建上下文:

docker context create ubuntu --docker "host=ssh://myuser@192.168.1.100"
docker context use ubuntu
docker run -it alpine sh

我得到:

docker: Cannot connect to the Docker daemon at http://docker. Is the docker daemon running?.

我在尝试时遇到同样的错误:

docker -H ssh://myuser@192.168.1.100 run -it alpine sh

我发现的解决方案似乎没有任何帮助。

PS: 192.168.1.100 仅用于提问。当 运行ning 命令时,我使用真实 IP,这是正确的,不会与任何东西冲突。直接 SSH 运行良好。

您确定 Ubuntu 上的 ip 是 192.168.1.1 吗?

因为我认为这是你的路由器 ip :)

你可以 post ip a 来自你的 Ubuntu 吗?

对于您的情况,您可以使用 docker-machine:

安装:

base=https://github.com/docker/machine/releases/download/v0.16.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
chmod +x /usr/local/bin/docker-machine

Run/create:

docker-machine create \
  --driver generic \
  --generic-ip-address=put_here_ip_of_remote_docker \
  --generic-ssh-key ~/.ssh/id_rsa \
  vm_123

检查:

docker-machine ls
docker-machine ip vm_123
docker-machine inspect vm_123

使用:

docker-machine ssh vm_123
docker run -it alpine sh
exit
exit
eval $(docker-machine env -u)

额外提示:

您还可以通过以下命令将 vm_123 设置为活动 docker 机器:

eval $(docker-machine env vm_123)
docker run -it alpine sh
exit
eval $(docker-machine env -u)

并取消设置 docker 机器 vm_123 通过此命令激活:

eval $(docker-machine env -u)

https://docs.docker.com/machine/drivers/generic/

https://docs.docker.com/machine/examples/aws/

https://docs.docker.com/machine/install-machine/

https://docs.docker.com/machine/reference/ssh/