Python Docker运行:装入的卷未显示文件中的更改
我正在努力运行最新的更改。详情如下 DockerfilePython Docker运行:装入的卷未显示文件中的更改,python,python-3.x,docker,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/ p
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
但它只显示生成时的更改。首先,在启动容器时,您使用的不是卷,而是绑定装载。因此,您可以将主机上的目录
/Development/PetProjects/mindsdb
装载到/usr/apps/
目录。对主机上此目录中的文件所做的每一项更改都将在容器中可见,反之亦然
如果要使用卷,可以使用docker volume create
命令创建一个卷,然后使用此卷运行容器:docker container run-v volume\u name:path\u in\u container image\u name
。然后,您可以停止容器并通过传递此卷以运行命令再次运行它,对容器中路径的更改可以跨容器创建存储
另一件事是,您试图在容器中装载/usr/apps/
,并使用Dockerfile复制了一个python脚本。请注意,在您当前的docker运行中,/Development/PetProjects/mindsdb
的命令内容将替换容器中的/usr/apps/
的内容,如果您在/Development/PetProjects/mindsdb
中没有脚本,则脚本将在容器中不可见
此外,由于路径相对性,您的CMD
似乎不起作用。您应该将CMD更改为CMD[“python”,“/usr/apps/test.py”]
或使用WORKDIR
选项-WORKDIR/usr/apps/
,以便可以从该目录执行python命令,并且可以在那里看到脚本
有关卷和绑定装载之间差异的更多信息,请参见。关于/Development/PetProjects/mindsdb?@GonzaloMatheu文件的内容。感谢您的回复。理想情况下,我正在为Python3.7寻找一个可以保留已安装libs的自定义映像,当我运行时,我会使用docker exec
来SSH并完成我的工作。我无法做到这一点。为什么我不能在安装了所有libs的情况下运行一个映像来提供bash呢?在您的情况下,您可以像在所有python依赖项中一样创建映像。但是,只要容器中的进程正在运行,容器就会运行。您可以将您的容器装载到容器中的某个目录,其中包含主机上的项目文件。然后,在使用docker-run
命令时,装载目录并覆盖要在容器中运行的命令:docker-run-v/host\u-dir:container\u-dir image bash
。现在,您可以在容器控制台中使用来自主机操作系统的文件。