簡體   English   中英

如何從python腳本運行交互式docker shell

[英]How can I run interactive docker shell from python script

我構建了有助於在docker swarm中進入容器的腳本:

import docker

d = docker.from_env()
s = d.services.get(args.service_name)
task = s.tasks(filters={"desired-state": "running"})
node = d.nodes.get(task[0]['NodeId'])
container_id = task[0]['Status']['ContainerStatus']['ContainerID']

print("env DOCKER_HOST=tcp://{addr}:2376 docker exec -ti {container} bash".format(addr=node.attrs['Status']['Addr'], container=container_id))

現在,我想從腳本本身運行交互式外殼程序,但這不起作用:

c_client = docker.DockerClient(base_url="tcp://{}:2376".format(node.attrs['Status']['Addr']))
c = c_client.containers.get(container_id)
c.exec_run("bash", stdin=True, tty=True)

那么,有什么方法可以僅使用python和python-docker運行交互式shell?

似乎有可能,但是可能很麻煩。

看起來您首先需要使用socket=True 完成此操作后,您需要將Python進程的stdinstdout連接到套接字,並根據需要進行讀寫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM