【发布时间】:2018-08-04 00:15:41
【问题描述】:
我正在尝试使用 docker-py 库从 python3 脚本启动/运行 docker 容器。这是代码。
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。 错误信息是:
b'Cannot find input file: /usr/local/gfs_wind_f000.grib\n'
python 脚本位于 /var/www/mywebsite/api/data/grib,这也是 *.grib 文件所在的位置。
命令字符串类似于grib2json github 项目中给出的示例,除了我使用--output 将json 写入文件。
grib2json --names --data --fp 2 --fs 103 --fv 10.0 gfs.t18z.pgrbf00.2p5deg.grib2
为了澄清,应该读取并处理为 json 的 *.grib 文件与 python 脚本位于同一目录中。
我认为断开连接是 docker 容器在内部而不是在主机文件系统上查找文件。
如何建立这种联系?
非常感谢您提出的任何建议。 布莱恩
【问题讨论】:
-
这听起来像你在寻找类似
subprocess.call()的东西,而不是任何与 Docker 相关的东西。如果脚本不在映像中,而输入和输出在主机文件系统中……Docker 是如何进入其中的? -
我认为必须有一种方法可以通过某种类型的映射或卷共享将 docker 容器中处理的文件推送到主机文件系统。
标签: python-3.x docker dockerpy