Chr*_*ler 58 file-permissions docker dockerfile
给出以下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.但这似乎更像是一个黑客.
Geo*_*zov 127
--chown最后添加了一个标志COPY:
COPY --chown=patrick hostPath containerPath
这种新语法似乎适用于Docker 17.09.
有关更多信息,请参阅PR.
Chr*_*ler 10
我想我找到了一个有效的解决方案.使用数据卷容器就可以了.首先,我创建数据卷容器,其中包含我的外部目录的副本:
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>在运行应用程序容器时使用它.
| 归档时间: | 
 | 
| 查看次数: | 55245 次 | 
| 最近记录: |