docker compose:group_add使用组id但不使用组名称

docker compose:group_add使用组id但不使用组名称,docker,docker-compose,Docker,Docker Compose,我有一个容器,需要在某个时候运行其他容器 我使用group\u add将容器的用户添加到主机的docker用户组 如果我设置了组id,但没有设置组名,则效果很好。文件中说,它应该同时适用于这两种情况。对这个问题有什么想法吗 以下是我的docker compose文件的简化版本: version: '2.1' services: my-worker: image: workers/data-handler:1.0.2 volumes:

我有一个容器,需要在某个时候运行其他容器

我使用
group\u add
将容器的用户添加到主机的
docker
用户组

如果我设置了组id,但没有设置组名,则效果很好。文件中说,它应该同时适用于这两种情况。对这个问题有什么想法吗

以下是我的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

映像中的
docker
组可能与主机的组id不同。检查容器内docker的组id:

$ getent group docker | cut -d: -f3
当您使用
group\u 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