linux – 带有’–user’的Docker无法写入具有不同所有权的卷
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 带有’–user’的Docker无法写入具有不同所有权的卷,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1535字,纯文字阅读大概需要3分钟。
内容图文
![linux – 带有’–user’的Docker无法写入具有不同所有权的卷](/upload/InfoBanner/zyjiaocheng/965/e19866431fea41afa309894ebe434145.jpg)
我已经玩了很多任何组合使得docker能够工作,但是……首先我的环境:
Ubuntu linux 15.04和Docker 1.5.0版,构建a8a31ef.
我有一个目录’/ test / dockervolume’和两个用户user1和user2在一个组用户
chown user1.users /test/dockervolume
chmod 775 /test/dockervolume
ls -la
drwxrwxr-x 2 user1 users 4096 Oct 11 11:57 dockervolume
user1和user2都可以在此目录中写入删除文件.
我使用标准的docker ubuntu:15.04图像. user1的id为1000,user2的id为1002.
我用下一个命令运行docker:
docker run -it --volume=/test/dcokervolume:/tmp/job_output --user=1000 --workdir=/tmp/job_output ubuntu:15.04
在docker中我只做简单的’触摸测试’,它适用于id为1000的user1.当我用–user 1002运行docker时,我无法写入该目录:
I have no name!@6c5e03f4b3a3:/tmp/job_output$touch test2
touch: cannot touch 'test2': Permission denied
I have no name!@6c5e03f4b3a3:/tmp/job_output$
只是要清楚,如果不是在docker中,两个用户都可以写入该目录.
所以我的问题是Docker设计的这种行为,或者它是一个错误,或者我错过了手册中的内容?
解决方法:
docker的–user参数只更改id而不是docker中的组ID.所以,在码头工具中,我有:
id
uid=1002 gid=0(root) groups=0(root)
它不像原来的系统,我有组= 1000(用户)
因此,一种解决方法可能是将passwd和group文件映射到docker.
-v /etc/docker/passwd:/etc/passwd:ro -v /etc/docker/group:/etc/group:ro
另一个想法是映射运行–user所拥有的tmp目录,并且当docker的工作完成时将文件复制到最终位置
TMPFILE=`mktemp`; docker run -v $TMPFILE:/working_dir/ --user=$(id -u); cp $TMPDIR $NEWDIR
这个讨论Understanding user file ownership in docker: how to avoid changing permissions of linked volumes为我的问题带来了一些启示.
内容总结
以上是互联网集市为您收集整理的linux – 带有’–user’的Docker无法写入具有不同所有权的卷全部内容,希望文章能够帮你解决linux – 带有’–user’的Docker无法写入具有不同所有权的卷所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。