Docker
如何在 docker swarm 模式服務呼叫上設置 Linux 功能
我正在研究在 swarm (1.12.x) 下執行的保險庫的概念。
單個容器將以以下方式啟動:
docker run -d --cap-add IPC_LOCK -p 8200:8200 -p 8215:8125 --name vault --volume /vagrant/vault:/vagrant/vault vault server -config=/path/to/vault.hcl
但是當我想在 swarm 中將其作為服務執行時,似乎無法指定
IPC_LOCK
功能,以便在這種情況下鎖定 Vault 服務的加密交換。使用命令啟動群模式服務時如何設置 –cap-add 標誌
docker service create
?
從 20.10 開始,可通過以下方式
docker service create
獲得--cap-add
:$ docker service create --help ... --cap-add list Add Linux capabilities --cap-drop list Drop Linux capabilities
或者在使用與
docker stack deploy
版本 2 文件相同語法的 compose 文件中:version: "3.9" services: app: image: your-image:tag cap_add: - CAP_NAME1 - CAP_NAME2 cap_drop: - CAP_NAME3 - CAP_NAME4
$$ Original answer from before 20.10 $$ 目前不支持,但 Docker 正在研究解決方案。不盲目包含該
--cap-add
選項背後的邏輯是在大型集群中,管理員向工作人員送出具有附加權限的容器可能存在安全問題。工作人員可能信任正在執行的無法訪問主機的安全容器,但不希望通過特權容器允許遠端根訪問主機。關於這個的討論已經在 github 上結束了:
https://github.com/docker/docker/pull/26849#issuecomment-252704844
https://github.com/docker/swarmkit/issues/1030