首页 > 解决方案 > docker 如何处理文件路径?

问题描述

附加到正在运行的 docker 容器时,我注意到文件路径(在 bash 中)是我本地机器的路径。例如,我的用户名是文件路径等的一部分。

如何确定要放入我的 python 脚本和 dockerfile 的适当文件路径?(两者都包含在图像中)。现在我的本地文件路径有效,但我不确定为什么我应该将我的 WORKDIR 定义为我的本地文件路径,如果它是一个全新的图像。

标签: pythondocker

解决方案


当您将自己附加到 docker 容器时,您将登录到由 docker 映像构建的容器。它与您的主机操作系统无关。例如,如果您使用 UBUNTU 基础镜像,那么路径显然与 Red hat 基础镜像不同。

也就是说,您可以将本地文件路径挂载为卷或绑定挂载。如果您希望 docker 容器文件系统的某些部分在容器重新启动之间保持不变,那么就会出现这种情况。如果要包含 python 脚本,请使用 DockerFile 并构建它来添加它。下面的例子

FROM tomcat
LABEL maintainer="xxx"

RUN apt-get update && \
    apt-get -y install openssh-server && \  

WORKDIR /usr/src/app
COPY package.json .
RUN npm install
EXPOSE 4000   
CMD [ “npm”, “start” ] 

Docker 使用分层系统。因此,请确保将经常更改的代码部分放入 dockerfile 的底部,以便您可以利用它。从上面的示例中,您可以看到我将 python 文件复制到最后,并且我的图像基于 tomcat 图像。

WORKDIR 设置工作目录,如果您通过Entyrpoint、CMD 等运行脚本,它很有用。实际上它是相同的,cd /usr/src/app && np npm install但人们更喜欢workdir可读性。此外,它与您上面提到的全新形象无关。

希望你能得到大局。如果您有任何问题,请告诉我


推荐阅读