摘要:共享卷組在Docker容器內發生更改,具體取決於主機的哪個用戶正在運行該容器。Docker:共享卷組根據主機用戶而變化
在我的主機,我有兩個用戶:userHost1和userHost2
登錄身份userHost1我得到Debian的形象和我建立具有以下Dockerfile泊塢窗圖像:
FROM debian
RUN adduser --disabled-password --gecos '' user
之後,當我用userHost1運行docker並加載共享卷時,我可以在其上寫入。但是,如果我用userHost2加載它,我無法寫入。
運行搬運工爲userHost1:
[email protected]:~$ docker run -t -i -u user -v /home/userHost1/try/:/try/ my_debian
[email protected]:/$ ls -ahl
...
drwxrwxr-x 2 user user 4.0K Mar 19 03:41 try
...
但是,如果我登錄到主機userHost2:
[email protected]:~$ docker run -t -i -u user -v /home/userHost2/try/:/try/ my_debian
[email protected]:/$ ls -ahl
...
drwxrwxr-x 2 1002 1002 4.0K Mar 19 03:45 try
...
[email protected]:/$ touch try/hello
touch: cannot touch `hello': Permission denied
這究竟是爲什麼?我認爲主機中的用戶與碼頭集裝箱無關。是否因爲我將用戶主機1拉到Debian鏡像?
當然,userHost1是/ home/userHost1/try /的所有者,userHost2是/ home/userHost2/try /的所有者。
太好了,非常感謝你的解釋。 有沒有處理這個問題的策略/最佳實踐? – user1294122 2015-03-20 04:38:02
那麼,最簡單的解決方案是確保你到處都使用相同的uid,即userHost2需要將uid設置爲userHost1,可以使用useradd/adduser進行設置。否則,您可以提供選定的gid訪問權限並將所有用戶添加到該組。 – 2015-03-20 10:22:08