Docker运行:装入的卷未显示文件中的更改

2024-04-28 01:38:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力运行最新的更改。以下是详细情况。在

Dockerfile

FROM python:3.7.3

RUN mkdir -p /usr/apps

COPY test.py /usr/apps

RUN pip install mindsdb
CMD [ "python","test.py" ]

构建

^{pr2}$

运行

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

但它只显示生成时的更改。在


Tags: installappspiprunfrompytestdockerfile
1条回答
网友
1楼 · 发布于 2024-04-28 01:38:03

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

如果您想使用卷,可以使用docker volume create命令创建一个卷,然后用这个卷运行容器:docker container run -v volume_name:path_in_container image_name。然后,您将能够停止容器并再次运行它,方法是传递这个volume to run命令,并且对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命令,并且可以在那里看到脚本。在

有关卷和绑定装载之间差异的详细信息,请参见docker documentation。在

相关问题 更多 >