Docker在容器外的input/输出

我用python脚本创build了一个docker容器。 python脚本获取input文件,进行一些处理并将输出文件保存在某个指定的位置。

docker run /app/script.py --input /data/input.csv --output /data/output.csv 

由于每次运行脚本时input文件都可能不同,因此我希望它位于Docker容器之外。 我也想将输出存储在容器外的某处。

 docker run /app/script.py --input /my/local/location/outside/docker/input.csv --output /my/local/location/outside/docker/output.csv 

docker工人支持这个吗? 如果是这样,一个人怎么能够实现呢?

我的Dockerfile如下所示:

 FROM phusion/baseimage RUN apt-get update RUN apt-get install -y build-essential RUN apt-get install -y python-dev RUN apt-get install -y python-pip RUN apt-get install -y python-numpy && \ apt-get install -y python-scipy COPY ./requirements.txt /app/requirements.txt COPY ./src/script.py /app/script.py WORKDIR /app COPY . /app 

您可以使用-v选项将包含文件的目录作为Docker数据卷装入: https : //docs.docker.com/engine/tutorials/dockervolumes/

 docker run -d -P --name myapp -v /app mydir/app python script.py 

这将带来额外的好处,允许您停止容器,对文件进行更改,并启动容器并查看容器内反映的更改。

所以你应该添加到你的Dockerfile一行

ENTRYPOINT ["python","/app/script.py"]

和a

CMD myinput

或类似的东西,

在Dockerfile中,CMD和ENTRYPOINT有什么区别?

阅读有关的文档

https://docs.docker.com/engine/reference/builder/#entrypoint

https://docs.docker.com/engine/reference/builder/#cmd