vol*_*vox 6 docker docker-swarm
我正在研究在 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 服务的加密交换。
使用docker service create命令启动群模式服务时如何设置 --cap-add 标志?
从 20.10 开始,可以从以下位置docker service create获得--cap-add:
$ docker service create --help
...
--cap-add list Add Linux capabilities
--cap-drop list Drop Linux capabilities
Run Code Online (Sandbox Code Playgroud)
或者在使用与docker stack deploy版本 2 文件相同的语法的撰写文件中:
version: "3.9"
services:
app:
image: your-image:tag
cap_add:
- CAP_NAME1
- CAP_NAME2
cap_drop:
- CAP_NAME3
- CAP_NAME4
Run Code Online (Sandbox Code Playgroud)
[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
小智 8
这里的所有其他答案都是旧的。Docker 20.10.0 和更新版本现在支持通过docker service命令行和Docker Stack YAML 文件格式为 Swarm 服务指定功能。
在命令行上,您只需指定--cap-add [capability]or --cap-drop [capability]。
这是在 Docker Stack YAML 文件中添加功能的示例:
version: "3.9"
services:
your-service:
cap_add:
- CAP_SYS_ADMIN
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10392 次 |
| 最近记录: |