我很难掌握最新的变化。下面是详细情况。
Dockerfile
FROM python:3.7.3
RUN mkdir -p /usr/apps
COPY test.py /usr/apps
RUN pip install mindsdb
CMD [ "python","test.py" ]构建
docker build -t py37:custom . Run
docker run -it -v /Development/PetProjects/mindsdb:/usr/apps/ py37:custom但它只显示了在构建时的变化。
发布于 2019-05-19 10:58:41
首先,在启动容器时,您不是使用卷,而是使用bind mounts。因此,您可以将主机上的/Development/PetProjects/mindsdb目录挂载到/usr/apps/目录。在此目录中对主机上的文件所做的每一项更改都将在容器中看到,而反过来也是如此。
如果要使用卷,可以使用docker volume create命令创建卷,然后使用以下卷运行容器:docker container run -v volume_name:path_in_container image_name。然后,您可以通过传递这个卷来运行命令来停止容器并再次运行它,并且可以跨容器创建存储对path_in_container目录的更改。
另一件事是,您正在尝试在容器中挂载/usr/apps/,并且使用Dockerfile在那里复制了一个python脚本。请注意,在您当前的docker run命令中,/Development/PetProjects/mindsdb 的内容将替换容器中的 /usr/apps/内容,如果您在/Development/PetProjects/mindsdb中没有脚本,那么脚本将在容器中不可见。
此外,由于路径的相对性,您的CMD似乎无法工作。您应该将CMD更改为CMD [ "python","/usr/apps/test.py" ],或者使用WORKDIR选项- WORKDIR /usr/apps/,这样您的python命令就可以从这个目录执行,并且脚本可以在那里可见。
有关卷和绑定挂载之间差异的更多信息可以在码头文件中找到。
https://stackoverflow.com/questions/56206560
复制相似问题