如何使用docker-py启动bash shell?

11 投票
1 回答
7222 浏览
提问于 2025-04-18 09:50

我正在尝试使用docker-py这个库来运行一个docker容器,并希望能进入这个容器的bash命令行。到目前为止,我已经成功运行了这个容器(我可以通过docker ps看到它,而且用原生的docker客户端也能顺利连接),但是当我使用官方Python库中的attach()方法时,它却只返回了一个空字符串。我该如何连接到我的bash命令行呢?

>>> import docker
>>> c = docker.Client()
>>> container = c.create_container(image='d11wtq/python:2.7.7', command='/bin/bash', stdin_open=True, tty=True, name='docker-test')
>>> container
{u'Id': u'dd87e4ec75496d8369e0e526f343492f7903a0a45042d312b37859a81e575303', u'Warnings': None}
>>> c.start(container)
>>> c.attach(container)
''

1 个回答

12

我最终发布了一个库来解决这个问题:https://github.com/d11wtq/dockerpty

import docker
import dockerpty

client = docker.Client()
container = client.create_container(
    image='busybox:latest',
    stdin_open=True,
    tty=True,
    command='/bin/sh',
)
client.start(container)

dockerpty.PseudoTerminal(client, container).start()

撰写回答