首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带命令行参数的docker-py从Python3运行Docker容器

使用带命令行参数的docker-py从Python3运行Docker容器
EN

Stack Overflow用户
提问于 2018-08-04 08:15:42
回答 1查看 429关注 0票数 0

我正在尝试使用docker-py库从python3脚本启动/运行docker容器。这是代码。

代码语言:javascript
复制
c = docker.DockerClient()
ctr = c.containers.run('alexwoif/docker-grib2json',
command='grib2json --names --data --fp 2 --fs 103 --fv 10.0 --output /usr/local/{}.json /usr/local/{}'.format(grib_file, grib_file), detach=True)

python脚本在主机上,而不是在容器中,所以当我运行脚本时,它找不到目标grib_file。错误消息为:

代码语言:javascript
复制
b'Cannot find input file: /usr/local/gfs_wind_f000.grib\n'

python脚本位于/var/www/mywebsite/api/data/grib中,这也是*.grib文件所在的位置。

命令字符串类似于json github项目中给出的示例,只是我使用--output将grib2json写入文件。

代码语言:javascript
复制
grib2json --names --data --fp 2 --fs 103 --fv 10.0 gfs.t18z.pgrbf00.2p5deg.grib2

为了澄清起见,应该读取并处理到json的*.grib文件与python脚本位于同一目录中。

我认为断开连接是因为docker容器在内部查找文件,而不是在主机文件系统上。

我如何建立这种联系?

非常感谢您的任何建议。布莱恩

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-10 18:03:12

可以通过volumes参数挂载docker主机的/usr/local

代码语言:javascript
复制
c = docker.DockerClient()
ctr = c.containers.run(
    'alexwoif/docker-grib2json',
    command='grib2json --names --data --fp 2 --fs 103 --fv 10.0 --output /usr/local/{}.json /usr/local/{}'.format(grib_file, grib_file),
    detach=True,
    volumes={'/usr/local': {'bind': '/usr/local', 'mode': 'ro'}})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51681410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档