go语言调用python脚本_python - Docker交互模式和执行脚本

本文介绍了一种在Docker容器中实现多会话的方法,通过创建交互式容器并使用docker exec命令附加多个bash会话,可以实现在容器内同时执行脚本与查看结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的Docker容器中有一个需要执行的python脚本,但是我也需要在容器创建后(使用/bin/bash)对其进行交互式访问。

我希望能够创建容器,执行脚本,并在容器中查看所发生的更改/结果(无需手动执行Python脚本)。

我现在面临的问题是,如果我在docker文件中使用cmd或entrypoint命令,那么一旦容器被创建,我就无法返回到它。我尝试使用Docker Start和Docker Attach,但我得到了错误:sudo docker start containerID

sudo docker attach containerID

"You cannot attach to a stepped container, start it first"

理想情况下,与此接近的是:

sudo docker run -i -t image /bin/bash python myscript.py

假设我的python脚本包含类似的内容(与它所做的无关,在本例中,它只是创建一个带有文本的新文件):

open('newfile.txt','w').write('Created new file with text\n')

当我创建容器时,我希望执行脚本,并且希望能够看到文件的内容。比如:

root@66bddaa892ed# sudo docker run -i -t image /bin/bash

bash4.1# ls

newfile.txt

bash4.1# cat newfile.txt

Created new file with text

bash4.1# exit

root@66bddaa892ed#

在上面的示例中,我的python脚本将在创建容器以生成新文件new file.txt时执行。这就是我需要的。

最佳答案:

我做这件事的方式略有不同,有一些优势。

它实际上是多会话服务器,而不是脚本,但在某些情况下甚至更可用:# Just create interactive container. No start but named for future reference.

# Use your own image.

docker create -it --name new-container

# Now start it.

docker start new-container

# Now attach bash session.

docker exec -it new-container bash

主要优点是可以将几个bash会话附加到单个容器上。例如,我可以使用bash执行一个会话来告诉日志,而在另一个会话中执行实际的命令。

btw分离上一个“exec”会话时,容器仍在运行,因此它可以在后台执行操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值