Docker 容器输出目录在主机中不可见

Docker 容器输出目录在主机中不可见,docker,Docker,我有Dockerfile,如图所示。 入口点中的脚本创建一个目录并放置少量工件 # from base image FROM ...... RUN mkdir -p /home/myuser RUN groupadd -g 999 myuser &&\ useradd -r -u 999 -g myuser myuser ENV HOME=/home/myuser ENV APP_HOME=/home/myuser/workspace RUN mkdir $AP

我有Dockerfile,如图所示。 入口点中的脚本创建一个目录并放置少量工件

# from base image
FROM ......

RUN mkdir -p /home/myuser

RUN groupadd -g 999 myuser &&\
    useradd -r -u 999 -g myuser myuser

ENV HOME=/home/myuser
ENV APP_HOME=/home/myuser/workspace


RUN mkdir $APP_HOME
WORKDIR $APP_HOME

RUN chown -R myuser:myuser $APP_HOME

USER myuser

ENTRYPOINT ...... 
我为上图启动一个容器,如图所示

sudo docker run -v ${WORKSPACE}/output:/home/myuser/workspace/output image
我无法在主机中获取工件<代码>${WORKSPACE}/output使用权限创建
drwxr\u xr\u x

将容器文件放入主机的过程是什么

其他信息:

  • 我的主机用户名是
    kit
  • 容器用户是
    myuser
  • 容器工作得非常好-在创建输出文件时,它会抛出一个错误,
    权限被拒绝
  • 我试图向
    ${WORKSPACE}/output
    授予
    drwxrwxrwx
    的完全权限。然后我可以看到输出文件

权限被拒绝错误是因为您正在运行uid为999的容器,但试图写入uid 1000拥有的主机目录,并且仅配置为允许用户写入。你可以:

  • chmod目录以允许任何人写入(不推荐,但快速简单)
  • 更新映像以匹配主机上用户的uid/gid
  • 切换到使用命名卷
  • 在启动应用程序之前,使用入口点将容器uid/gid与卷装载的uid/gid对齐

我将在中详细介绍这些。还有一些发言者的笔记(我相信P或S会显示出来)。

容器是否正常运行?输出目录为空?是的,它为空。使用docker Exec时,容器中的home/myuser/workspace/output文件也可以正常工作。在写入输出目录时,它抛出一个权限被拒绝的错误