我有一个容器,它需要在某个时刻运行其他容器。
我使用group_add
将容器的用户添加到主机的docker
用户组中。
如果我设置了组id,但不使用组名,就可以很好地工作。文档上说,它应该同时适用于两种https://docs.docker.com/compose/compose-file/compose-file-v2/#group_add。对这个问题有什么想法吗?
这是我的docker-compose文件的简化版本:
version: '2.1'
services:
my-worker:
image: workers/data-handler:1.0.2
volumes:
- /var/run/docker.sock:/var/run/docker.sock
group_add:
- 994 #docker group id
command: run
发布于 2020-04-12 01:34:30
镜像中的docker
组可能与主机不具有相同的组id。检查容器内docker的group id:
$ getent group docker | cut -d: -f3
当您使用group_add: docker
时,它会查找容器内的docker组,因此您的用户将没有正确的权限。由于您正在挂载docker.sock文件,因此它将使用主机权限(包括id ),因此您需要提供正确的id。
我没有让它在我的环境中以一种可行的方式工作,而是求助于shell脚本而不是docker-compose
,因为它在我的用例中有效,并且我没有使用docker-compose
提供的额外功能。
#!/bin/bash
DOCKER_GROUP=$(getent group docker | cut -d: -f3)
docker run \
-v /var/run/docker.sock:/var/run/docker.sock \
--group-add $DOCKER_GROUP \
workers/data-handler:1.0.2
https://stackoverflow.com/questions/60056354
复制相似问题