本文主要是介绍docker: 将一个普通用户owner的文件夹挂载入容器,新建的文件为root的解决方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在某台服务器上,一个普通用户(假设用户名为szw,用户组ID与用户ID相同,均为1026)使用docker,将自己拥有的一个文件夹挂载入容器,进行计算任务。
计算完成后,新建的文件为root的解决方法,普通用户无法删除。
1. build一个镜像,在这个镜像中新建一个用户
为了解决这个问题,我们首先要对于原有的镜像进行改造,让这个镜像增加一个用户。
首先要知道我在这个服务器上的gid
与uid
在终端中输入命令:
cat /etc/passwd
看到uid
与gid
均为1026
新建new_user.Dockerfile
FROM harbor.atompai.com/nitrogen/xdock:v1
MAINTAINER qichun.tang@xtalpi.com
ENV NEW_UNAME="szw" # 填入你的用户名
ENV NEW_UID="1026" # 填入你的uid
RUN groupadd -g $NEW_UID $NEW_UNAME
RUN useradd -d /home/$NEW_UNAME -u $NEW_UID -g $NEW_UID $NEW_UNAME -m -s /bin/bash
终端中运行:
docker -H 0.0.0.0 build -t xdock:szw --file new_user.Dockerfile . #xdock后的tag改为你的用户名
2.新的使用方式
完成后,以后单机使用scorefunc注意两点:
- 使用用户镜像(如
xdock:szw
) - 退出前记得执行
chown -R szw:szw /root/c204_test
(szw表示用户名,/root/c204_test表示容器中的项目路径)
这是一个具体案例:
docker -H 0.0.0.0 run -it --rm -v $PWD/scorefunc:/home/scorefunc -v $PWD/c204_test:/root/c204_test xdock:szw /bin/bash
----进入镜像-----
cd /home/scorefunc
python setup.py install
scorefunc create -n c204_test -p /root/c204_test/
scorefunc prepare ligand csv --csv example/c204_test --pdbcode RET1 --gen_id
scorefunc prepare complex example/RET_complex.pdb
scorefunc pose generate -m rdock -j -1
scorefunc pose export -m rdock
重点:
chown -R szw:szw /root/c204_test/
chown -R szw:szw /home/scorefunc/
----退出镜像-----
这篇关于docker: 将一个普通用户owner的文件夹挂载入容器,新建的文件为root的解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!