首页 > 解决方案 > 通过 ssh 在远程机器上运行 docker 命令

问题描述

我有两台机器:

我希望能够在我的 Ubuntu 工作站上通过 ssh 从 MacOS 运行 docker 命令。在 Ubuntu 上运行命令时,Docker 工作正常。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 仅用于问题。运行命令时,我使用真实 IP,这是正确的,不会与任何东西发生冲突。直接 SSH 运行良好。

标签: dockersshdocker-container

解决方案


对于您的情况,您可以使用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

运行/创建:

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)

vm_123并通过以下命令将docker 机器取消设置为活动状态:

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/


推荐阅读