docker - 通过 ssh 在远程机器上运行 docker 命令
问题描述
我有两台机器:
- 运行 docker 的 Ubuntu 工作站
- 带有 Mac 操作系统的 Macbook
我希望能够在我的 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 运行良好。
解决方案
对于您的情况,您可以使用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/
推荐阅读
- gcc - __attribute__((io)), __attribute__((address)) 在 AVR 的 gcc 中似乎没有任何效果
- android - 无法读取 android 调试密钥
- loopback - 在 Quagga 中连接 eBGP 和 iBGP 路由器
- javascript - 使用 ReactQuill 库禁用任何用户输入
- c# - 如何在部分视图中获取浏览器查询字符串
- webpack - Webpack 4:无法解决符号链接模块的依赖关系
- c# - 使用委托绘制形状
- python - 如何在keras中将三维数组转换为五维数组
- ios - iOS - 需要这样的日期选择器
- powerbi - Add column of previous values from table of tables in Power BI / Power Query