Docker

如何在 docker swarm 模式服務呼叫上設置 Linux 功能

  • June 11, 2021

我正在研究在 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

https://github.com/docker/swarmkit/pull/1722

https://github.com/moby/moby/issues/25885#issuecomment-557790402>和<https://github.com/docker/cli/pull/2199

引用自:https://serverfault.com/questions/824516