如何在远程机器中生成 docker 容器

Lor*_*ins 5 python docker

是否可以使用适用于 Python 的 docker SDK在远程计算机中启动容器?

import docker
client = docker.from_env()

client.containers.run("bfirsh/reticulate-splines", detach=True)
# I'd like to run this container ^^^ in a machine that I have ssh access to.
Run Code Online (Sandbox Code Playgroud)

通过查看文档,这种类型的管理似乎超出了上述 SDK 的范围,因此在网上搜索时我得到提示,Python 的 kubernetes 客户端可能会有所帮助,但不知道从哪里开始。

Pie*_* B. 9

Docker SDK for Python没有明确记录,但您可以通过指定格式的主机来使用 SSH 连接到 Docker 守护进程ssh://[user]@[host],例如:

import docker

# Create a client connecting to Docker daemon via SSH
client = docker.DockerClient(base_url="ssh://username@your_host")
Run Code Online (Sandbox Code Playgroud)

还可以设置环境变量DOCKER_HOST=ssh://username@your_host并使用您提供的示例,该示例使用当前环境来创建客户端,例如:

import docker
import os

os.environ["DOCKER_HOST"] = "ssh://username@your_host"
# Or use `export DOCKER_HOST=ssh://username@your_host` before running Python

client = docker.from_env()
Run Code Online (Sandbox Code Playgroud)

注意:正如问题中所指定的,这是考虑到您可以通过 SSH 访问目标主机。你可以测试

ssh username@your_host
Run Code Online (Sandbox Code Playgroud)


小智 3

这是可能的,只需这样做:

client = docker.DockerClient(base_url=your_remote_docker_url)
Run Code Online (Sandbox Code Playgroud)

这是我找到的与此相关的文档:

https://docker-py.readthedocs.io/en/stable/client.html#client-reference


如果您只能通过 SSH 访问它,则有一个use_ssh_client选项