Docker Run:挂载卷未显示文件更改

时间:2019-05-19 09:39:11

标签: python python-3.x docker

我正在努力运行最新的更改。下面是详细信息。

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 . 

运行

docker run -it -v /Development/PetProjects/mindsdb:/usr/apps/  py37:custom

但是它仅显示构建时的更改。

1 个答案:

答案 0 :(得分:2)

首先,在启动容器时,您没有使用卷,而是使用bind mounts。因此,您将主机上的目录/Development/PetProjects/mindsdb挂载到/usr/apps/目录中。在此目录中,对主机上文件的所有更改将在容器中可见,反之亦然。

如果要使用卷,可以使用docker volume create命令创建一个,然后使用以下卷运行容器:docker container run -v volume_name:path_in_container image_name。然后,您可以通过将该卷传递给run命令来停止容器并再次运行它,并且可以在容器创建期间存储对path_in_container目录的更改。

另一件事是,您尝试将/usr/apps/挂载到容器中,并使用Dockerfile在其中复制了python脚本。请注意,在您的docker run当前的/Development/PetProjects/mindsdb命令内容中,将替换容器中 /usr/apps/的内容,如果您的脚本不在{{1} }-脚本在容器中不可见。

此外,由于路径的相对性,您的/Development/PetProjects/mindsdb似乎不起作用。您应该将CMD更改为CMD或使用CMD [ "python","/usr/apps/test.py" ]选项-WORKDIR,以便可以从此目录执行python命令,并在该目录中看到脚本。

有关卷和绑定安装之间差异的更多信息,请参见docker documentation