Docker复制和更改所有者
鉴于以下Dockerfile
FROM ubuntuRUN groupadd mygroup
RUN useradd -ms /bin/bash -G mygroup john
MKDIR /data
COPY test/ /data/test data
RUN chown -R john:mygroup /data
CMD /bin/bash
在复制的测试目录中,我已将文件许可权设置为770。
如果su
john在容器内进行操作,则无法访问测试目录中的任何文件或子目录。似乎此问题与aufs文件系统中的所有权有关,在该文件系统中,复制的目录仍然由root拥有,并且权限设置为770。
是否有解决此问题的方法以正确设置权限?一种可能是在复制之前将原始目录的权限设置为容器用户的uid。但这似乎更像是一种hack。
回答:
我想我找到了一个可行的解决方案。使用数据卷容器可以解决问题。首先,我创建数据卷容器,其中包含我的外部目录的副本:
FROM busyboxRUN mkdir /data
VOLUME /data
COPY /test /data/test
CMD /bin/sh
在我有用户的应用程序容器中,看起来可能像这样
FROM ubuntuRUN groupadd mygroup
RUN useradd -ms /bin/bash -G mygroup john
COPY setpermissions.sh /root/setpermissions.sh
CMD /root/setpermissions.sh && /bin/bash
setpermissions脚本完成了设置用户权限的工作:
#!/bin/bashif [ ! -e /data/.bootstrapped ] ; then
chown -R john:mygroup /data
touch /data/.bootstrapped
fi
现在,我只需要--volumes-from <myDataContainerId>
在运行应用程序容器时使用即可。
以上是 Docker复制和更改所有者 的全部内容, 来源链接: utcz.com/qa/428333.html