2019年1月20日 星期日

[docker] 最簡單的方法指定 Docker 用你的 group 身份執行

為什麼要談這個?
我們都知道 Docker 技術所形成的 container 可以讓你的系統執行在開發人員預期的環境, 基本上, 安裝系統就變成成了非常簡單而且單純. 你的機器且不會龍蛇雜處盤根錯節的到處都是軟體而會變成一個一個的 container.

但在 container 中運行的系統, 總是會需要存取 host 的資源, 例如從 host 用 -v 指令掛上來的 volumne 磁碟資源. 既然要存取 host 資源, 就會牽扯到你用什麼身份存取的問題.

這簡單的教學, 讓你可以指定 container user id 和 group id, 來存取 host 資源.
讓你可以存取 從 host 透過 -v 指令 mount 上來的 volume, 如果該 volume 在 host 上只有特定 group 可以存取. 畢竟, 在 host 上的資源應該要限制只有某些指定群組的 user 才可以存取.

如果你運行在 container 的服務要存取 host 資源, 當然也要指定它運行的身份, 才是.

Scenario
# 假定 host 上的 home2 volumne 只允許目前使用者 $USER 的 group id 可以存取. 因此, 要讓在 container 裡面的程序能夠順利存取 /home2, 只要使用 -u special_uid:special_gid 參數即可.

指令:
sudo docker run -u :`id -g $USER` -p 8080:8080 -p 50000:50000 -v /home2:/home2 $my_docker_image