首页 > 解决方案 > 安装docker后可以添加docker组吗?

问题描述

从下面的代码片段,取自这里

# 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组是在安装 docker 引擎之前显式创建的。

1)docker引擎安装不创建docker组吗?

groupadd2)为什么安装docker后不能运行?

标签: dockerdockerfile

解决方案


Docker 包在安装时创建 docker 组。同时,这是使用默认值创建的(我没有花时间检查,但我的两台 ubuntu 机器运行的 gid 为 999)。

在上面的示例中,该组是在安装包之前创建的,默认 gid 为 497,可以自定义(通过DOCKER_GID在 docker 环境中设置)。并且对您的原始链接有评论说:

默认设置为 497,即 AWS Linux ECS Instance 使用的组 ID

您在这里构建的是某种 dind(docker in docker)。目标是确保主机上的 docker guid 与 dind 实例中的 guid 相同,以便它们可以在已安装的卷上共享文件(例如,控制套接字以直接在主机上启动其他 docker 容器......)。

如果您没有事先创建组,您将无法在groupadd之后运行,因为该组已经存在。

您可以groupmod在现有组上运行,但我不喜欢弄乱 [g|u]ids。在安装软件包之前根据您的确切要求创建系统用户/组通常是最安全的方法。


推荐阅读