python 脚本中执行docker run命令结果异常

在Python中使用subprocess模块执行dockerrun-igolang:1.2/usr/bin/goversion命令时遇到文件未找到错误,而直接在终端执行则正常。问题可能在于Python调用命令的方式。通过更换为commands模块的getoutput方法,成功获取了golang:1.2镜像的goversion信息,表明原subprocess使用有误。
摘要由CSDN通过智能技术生成

问题描述:

在python 中执行docker run 命令并执行命令,出现没有此命令的问题,但在终端手动执行没有报错

cmd = docker run -i golang:1.2 /usr/bin/go version
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, 
    \ stdin=subprocess.PIPE)
stdout, stderr = p.communicate()
if stderr:
    log.log_info(stderr)
else:
    log.log_info(stdout)

结果输入为:

/usr/bin/go No such file or directory.

解决思路:

1.在环境中安装golang(仅测试,不是正确办法)
得到结果,单得到的go version 是环境中的。并非golang:1.2镜像的go version
说明执行的cmd 有问题。
2、使用 commands 执行命令

cmd = docker run -i golang:1.2 /usr/bin/go version
res = commands.getoutput(cmd)
    log.log_info("res:%s" % res)

结果正确

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值