Docker:共享卷组根据主机用户而变化

简介:在Docker容器中共享卷的组发生更改,具体取决于主机的哪个用户正在运行该容器。

在我的主机中,我有两个用户:userHost1和userHost2

作为userHost1login我得到的debian图像,我用下面的Dockerfilebuild立一个docker图像:

FROM debian RUN adduser --disabled-password --gecos '' user 

之后,当我运行docker与userHost1并加载共享卷,我可以写在它。 但是,如果我用userHost2加载它,我不能写。

运行docker作为userHost1:

 userHost1@host:~$ docker run -t -i -u user -v /home/userHost1/try/:/try/ my_debian user@a4b9df2f89ed:/$ ls -ahl ... drwxrwxr-x 2 user user 4.0K Mar 19 03:41 try ... 

但是,如果我以userHost2身份login到主机:

 userHost2@host:~$ docker run -t -i -u user -v /home/userHost2/try/:/try/ my_debian user@eb169acd52b4:/$ ls -ahl ... drwxrwxr-x 2 1002 1002 4.0K Mar 19 03:45 try ... user@eb169acd52b4:/$ touch try/hello touch: cannot touch `hello': Permission denied 

为什么发生这种情况? 我认为在主机上的用户是一个docker集装箱不相关的。 这是因为我拉的Debian图像为userHost1?

当然,两个userHost1都是/ home / userHost1 / try /的所有者,而userHost2是/ home / userHost2 / try /的所有者。

这只是一个简单的权限问题。 请记住,容器和主机上的uid相同,但用户名可能不同(因此uid 1002在主机和容器上可能有不同的名称)。

/home/userHost1/try/拥有者与容器中的用户user具有相同的uid。 /home/userHost2/try/的所有者是uid 1002,与容器中的user ,所以user不能写入目录。