从下面的代码片段(取自here)中,
# 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
组?2)为什么在安装docker之后我们不能运行
groupadd
?
最佳答案
Docker软件包会在安装时创建docker组。同时,这是使用默认值创建的(我没有花时间检查,但是我的两台ubuntu机器正在以999的gid运行)。
在上面的示例中,创建该组是在安装软件包之前创建的,该软件包的默认gid为497(可以在docker环境中设置DOCKER_GID
),可以自定义。在您的原始链接上有一条评论说:
Set to 497 by default, which is the group ID used by AWS Linux ECS Instance
您在这里构建的是某种形式的东西(docker中的docker)。目的是确保主机上的docker guid与dind实例中的guid相同,以便它们可以共享已安装卷上的文件(例如,控制套接字以直接在主机上直接启动其他docker容器...)。
如果您未事先创建组,则由于该组已存在,因此无法再运行
groupadd
。您可以在现有的组上运行
groupmod
,但是我不喜欢把[g | u] id弄乱。通常,在安装软件包之前按照您的确切要求创建系统用户/组是最安全的方法。
关于docker - 安装docker后可以添加docker组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58681161/