docker -compose: group_add работает с идентификатором группы, но не с именем группы - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть контейнер, который должен запускать другие контейнеры в какой-то момент.

Я использую group_add, чтобы добавить пользователя моего контейнера в группу пользователей docker хоста.

Это прекрасно работает, если я установил идентификатор группы, но не с именем группы. Документация говорит, что она должна работать как с https://docs.docker.com/compose/compose-file/compose-file-v2/#group_add. Есть идеи по этому вопросу?

Вот упрощенная версия моего docker -композитного файла:

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

1 Ответ

0 голосов
/ 11 апреля 2020

Вероятно, группа docker внутри образа не имеет такой же идентификатор группы, как и хост. Проверьте идентификатор группы docker внутри контейнера:

$ getent group docker | cut -d: -f3

Когда вы используете group_add: docker, он ищет группу docker внутри контейнера, чтобы у вашего пользователя не было необходимых прав. Так как вы монтируете файл docker .sock, он будет использовать разрешения хоста (включая идентификаторы), поэтому вам нужно предоставить правильный идентификатор.

У меня нет этого, чтобы работать в моей среде в работоспособным способом и прибегают к сценарию оболочки вместо 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...