运行docker容器与我自己的特权
我试图在Docker容器中包含一个复杂的应用程序的依赖关系,但让它在我自己的文件上运行,而不会在最后冲突的UID。 实质上,我想运行如下的东西:
docker run \ --rm \ --volume $HOME/playbook:/playbook --workdir /playbook \ --user $(id --user) \ container_image
但是,这是因为应用程序期望提供的UID对应于一个用户名:
getpwuid(): uid not found: 1000
我最终把这个在Dockerfile
:
RUN \ for uid in seq 1000 1010; do \ adduser --home /tmp/user_$uid --uid $uid user_$uid; \ done
有更好的解决scheme吗?
为便于使用,可以将/ etc / passwd和/ etc / group文件作为只读文件挂载到容器中:
docker run \ --rm \ --volume $HOME/playbook:/playbook --workdir /playbook \ --user $(id --user) \ --volume /etc/passwd:/etc/passwd:ro \ --volume /etc/group:/etc/group:ro \ container_image
如果容器需要定义自己的用户名,则两个缺点是可能的,并且来自映像的文件权限可能具有错误的或缺失的用户/组定义。