使用 SSHTunnelForwarder 远程访问 docker
reach docker over remote using SSHTunnelForwarder
我还是 docker 的新手,我正在尝试做这样的事情:
from sshtunnel import SSHTunnelForwarder
import docker
server = SSHTunnelForwarder(
'didi',
ssh_username="george",
ssh_password="ice",
remote_bind_address=('192.168.56.103',22),
local_bind_address =('unix:///var/run/docker.sock')
)
server.start()
print(server.local_bind_port)
client = docker.from_env()
server.stop()
我收到 ValueError:平台不支持 UNIX 域套接字。同时我没有找到让 docker 监听本地端口的“安全”方法。
有谁知道解决此问题的简单解决方法?谢谢
如果您尝试访问远程计算机上的 Docker,您需要将 local 计算机上的端口转发到 Docker 套接字在远程机器上。您可以使用 ssh
命令行执行此操作,如下所示:
ssh -L 4321:/var/run/docker.sock 192.168.56.103
只要该连接处于活动状态,您就可以在本地端口 4321 上访问 Docker:
docker -H tcp://localhost:4321 ps
不幸的是,sshtunnel
包不支持像这样转发对远程 Unix 套接字的访问(有关 local_bind_address
和 remote_bind_address
选项,请参阅 api documentation)。
但你很幸运!您不需要手动设置这种端口转发; Docker 能够通过 ssh 连接到远程主机,只需将您的 DOCKER_HOST
环境变量设置为 ssh
url:
$ export DOCKER_HOST=ssh://192.168.56.103
$ python
Python 3.9.0 (default, Oct 6 2020, 00:00:00)
[GCC 10.2.1 20200826 (Red Hat 10.2.1-3)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> c = docker.from_env()
>>> info = c.info()
>>> info['ServerVersion']
'19.03.13'
我还是 docker 的新手,我正在尝试做这样的事情:
from sshtunnel import SSHTunnelForwarder
import docker
server = SSHTunnelForwarder(
'didi',
ssh_username="george",
ssh_password="ice",
remote_bind_address=('192.168.56.103',22),
local_bind_address =('unix:///var/run/docker.sock')
)
server.start()
print(server.local_bind_port)
client = docker.from_env()
server.stop()
我收到 ValueError:平台不支持 UNIX 域套接字。同时我没有找到让 docker 监听本地端口的“安全”方法。
有谁知道解决此问题的简单解决方法?谢谢
如果您尝试访问远程计算机上的 Docker,您需要将 local 计算机上的端口转发到 Docker 套接字在远程机器上。您可以使用 ssh
命令行执行此操作,如下所示:
ssh -L 4321:/var/run/docker.sock 192.168.56.103
只要该连接处于活动状态,您就可以在本地端口 4321 上访问 Docker:
docker -H tcp://localhost:4321 ps
不幸的是,sshtunnel
包不支持像这样转发对远程 Unix 套接字的访问(有关 local_bind_address
和 remote_bind_address
选项,请参阅 api documentation)。
但你很幸运!您不需要手动设置这种端口转发; Docker 能够通过 ssh 连接到远程主机,只需将您的 DOCKER_HOST
环境变量设置为 ssh
url:
$ export DOCKER_HOST=ssh://192.168.56.103
$ python
Python 3.9.0 (default, Oct 6 2020, 00:00:00)
[GCC 10.2.1 20200826 (Red Hat 10.2.1-3)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> c = docker.from_env()
>>> info = c.info()
>>> info['ServerVersion']
'19.03.13'