You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Docker构建时创建的/usr/src/app文件夹位置的疑问

Docker WORKDIR目录位置疑问解答

问题描述

我使用如下实验性Dockerfile:

FROM python:3.11
WORKDIR /usr/src/app
RUN pwd
RUN ls -l
COPY requirements.txt ./
RUN ls -l


RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD [ "python", "-u", "subscriber.py" ]

使用--progress=plain和--no-cache参数执行docker build时,构建过程中可看到pwd命令输出为/usr/src/app,也能看到该文件夹的内容:复制requirements.txt前文件夹为空,复制后列表中显示该文件。

但在我的操作系统文件系统中,导航到/usr/src路径下却找不到名为app的文件夹。请问Docker是在哪里创建该文件夹的?还是构建过程中创建后又删除了?

我是Docker新手,我的Linux版本为Ubuntu 22.04.2 LTS。

补充说明:我了解到WORKDIR是在容器镜像内创建的,但连接到容器shell后,我也找不到该目录。

解答

  • Docker镜像与宿主机文件系统完全隔离
    WORKDIR /usr/src/app创建的目录是在Docker镜像的文件系统内部,和你Ubuntu宿主机的/usr/src没有任何关联,所以你在宿主机里找不到这个目录是正常的——它根本就不在宿主机的磁盘路径里。

  • 为什么进入容器shell也找不到?
    大概率是这两个原因:

    1. 没有基于自己构建的镜像启动容器:如果构建完镜像后,你用的是python:3.11这类基础镜像启动容器,自然找不到这个目录。必须用你构建好的镜像启动,比如执行docker run -it <你的镜像ID或名称> /bin/bash。
    2. 启动容器时修改了工作目录或挂载了卷:如果启动容器时加了-w参数指定了其他工作目录,或者用卷挂载覆盖了/usr/src/app路径,也会导致看不到这个目录。
  • 构建过程中的目录不会被删除
    构建时创建的/usr/src/app会被保留在镜像的分层文件系统中,只要镜像存在,这个目录就一直存在。你可以执行docker inspect <镜像ID>查看镜像的WorkingDir字段,确认这个目录确实是镜像的默认工作目录。

内容的提问来源于stack exchange,提问作者AllSolutions

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 13:48:43