Можно ли добавить группу Docker после установки Docker? - PullRequest
0 голосов
/ 03 ноября 2019

Из приведенного ниже фрагмента кода, взятого из здесь ,

# Create Docker Group with GID
# Set default value of 497 if DOCKER_GID set to blank string by Docker Compose
RUN groupadd -g ${DOCKER_GID:-497} docker

# Used to control Docker and Docker Compose versions installed
# NOTE: As of February 2016, AWS Linux ECS only supports Docker 1.9.1
ARG DOCKER_ENGINE=1.10.2
ARG DOCKER_COMPOSE=1.6.2

# ......

# Install Docker Engine
RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D && \
    echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | tee /etc/apt/sources.list.d/docker.list && \
    apt-get update -y && \
    apt-get purge lxc-docker* -y && \
    apt-get install docker-engine=${DOCKER_ENGINE:-1.10.2}-0~trusty -y && \
    usermod -aG docker jenkins && \
    usermod -aG users jenkins

docker, группа явно создается до установки механизма докера.

1) Разве установка Docker не создает группу docker?

2) Почему мы не можем запустить groupadd после установки Docker?

Ответы [ 2 ]

2 голосов
/ 03 ноября 2019

Пакет Docker создает группу Docker при установке. Между тем, он создается со значениями по умолчанию (которые я не потратил на проверку времени, но мои две машины с Ubuntu работают с gid 999).

В приведенном выше примере группа создается перед установкойпакет со значением по умолчанию 497, которое можно настроить (установив DOCKER_GID в среде докера). И есть комментарий к вашей исходной ссылке:

По умолчанию установлено значение 497, которое является идентификатором группы, используемым в AWS Linux ECS Instance

Что вы создаетевот какой-то динд (докер в докере). Цель состоит в том, чтобы удостовериться, что guid докера на хосте совпадает с guid в экземпляре dind, чтобы они могли совместно использовать файлы на подключенных томах (например, управляющие сокеты для запуска других контейнеров докера непосредственно на хосте ...).

Если вы не создали группу заранее, вы не сможете запустить groupadd впоследствии, потому что группа уже существует.

Вы можете запустить groupmod, хотя в существующей группе, но я не 'Мне не нравится связываться с [g | u] идентификаторами. Создание системного пользователя / группы с вашими точными требованиями перед установкой вашего пакета, как правило, является наиболее безопасным способом.

1 голос
/ 03 ноября 2019

Контейнеры не имеют тех же пользователей и групп, что и на главном компьютере. Это часть информации, которую контейнер изолирует от своей рабочей среды.

Способ сопоставить пользователей и группы с хост-машины контейнеру, создав их внутри образа с таким же uid/gid см. объяснение

В этом конкретном образе мы хотим, чтобы пользователь jenkins (созданный только на образе Docker) был частью группы docker (на хост-компьютере). Это позволит задачам jenkins (выполняемым пользователем jenkins) запускать команды docker без sudo. объяснение документации докера .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...