當使用 Docker container 進行開發時,通常會 mount 一個本機端的資料夾給 container,但這會造成 Host 和 Client 資料夾擁有人:群組的錯亂,除了強制給資料夾 777 權限外,也可以同步本機端和 Docker container 裡的用戶名稱和 uid,以解決這個問題。
首先在Host端,查詢使用者名稱和uid
ben@ben-UX305CA:~$ sudo -i [sudo] password for ben: root@ben-UX305CA:~# cat /etc/passwd ben:x:1000:1000:ben,,,:/home/ben:/bin/bash
然後進入 Docker,增加一個同名的用戶,並手動指定 uid
useradd ben -u 1000
此時在 Host 本機端和 Docker container 裡的用戶具有相同的名稱和 uid,所以對應到所 mount 的資料時,就不需要另外去調整權限。
然後我們在本機端開發時,預設是使用ben這個用戶,所以存檔後的權限為ben。因為我們設定好了 container 內的用戶名稱,所以在 container 內的權限也是ben,連uid也是相同的。
下圖在本機端使用Sublime Text 3增加檔案存檔後的結果,進入docker container 也是相同的用戶和權限
ben@ben-UX305CA:~/docker/ben_centos69/httpd$ ll 總計 36 drwxrwxr-x 2 ben ben 4096 5月 8 11:25 ./ drwxrwxr-x 4 ben ben 4096 5月 6 23:09 ../ -rw-rw-r-- 1 ben ben 45 5月 8 11:11 centos69.sublime-project -rw-rw-r-- 1 ben ben 16293 5月 8 11:11 centos69.sublime-workspace -rw-rw-r-- 1 ben ben 56 5月 8 11:25 for.php -rw-r--r-- 1 ben ben 43 5月 6 23:13 index.php
另外,如果要刪除用戶時 (連同家目錄也刪除)
userdel -r ben
但仍要手動刪除用戶的 mail box
rm -R /var/spool/mail