Docker WORKDIR路径疑问:为何未在宿主机/home下创建/app目录?
关于Dockerfile中WORKDIR与COPY路径的误解解答
你完全是对WORKDIR和Dockerfile命令的作用理解有误——Dockerfile里的所有命令都是在构建镜像的内部文件系统中执行,和宿主机的文件系统没有直接关联:
WORKDIR /home/app:这条命令是在镜像的内部文件系统中创建并切换到/home/app目录,并非在宿主机上创建路径。COPY . /home/app:是把你执行docker build命令时所在的宿主机目录下的文件,复制到镜像内部的/home/app目录中,和宿主机的/home/app路径没有关系。
你看到的/var/lib/docker/xxx/xxx/home/app是Docker在宿主机上存储镜像层的临时管理目录,属于Docker内部维护的路径,和你想要操作的宿主机/home/app是完全不同的概念。
如果需要让容器访问宿主机的/home/app目录,要在运行容器时使用绑定挂载(bind mount),比如:
docker run -v /home/app:/container/target/path your-image-name
这会把宿主机的/home/app挂载到容器内部的指定路径,实现宿主机与容器的文件共享,但这一步和Dockerfile构建镜像的流程无关。
内容的提问来源于stack exchange,提问作者herpderp
相关产品推荐
相关产品推荐

