Вероятно, группа 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