在主机

时间:2018-07-04 20:17:46

标签: 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 $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_xr_x创建

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

其他信息:

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

1 个答案:

答案 0 :(得分:0)

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

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

我在my slides here中对此进行了详细介绍。那里也有一些演讲者的注释(我相信P或S都会引起注意)。