Docker复制和更改所有者

鉴于以下Dockerfile

FROM ubuntu

RUN 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 busybox

RUN mkdir /data

VOLUME /data

COPY /test /data/test

CMD /bin/sh

在我有用户的应用程序容器中,看起来可能像这样

FROM ubuntu

RUN groupadd mygroup

RUN useradd -ms /bin/bash -G mygroup john

COPY setpermissions.sh /root/setpermissions.sh

CMD /root/setpermissions.sh && /bin/bash

setpermissions脚本完成了设置用户权限的工作:

#!/bin/bash

if [ ! -e /data/.bootstrapped ] ; then

chown -R john:mygroup /data

touch /data/.bootstrapped

fi

现在,我只需要--volumes-from <myDataContainerId>在运行应用程序容器时使用即可。

以上是 Docker复制和更改所有者 的全部内容, 来源链接: utcz.com/qa/428333.html

回到顶部