docker - 安装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
组吗?
groupadd
2)为什么安装docker后不能运行?
解决方案
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。在安装软件包之前根据您的确切要求创建系统用户/组通常是最安全的方法。
推荐阅读
- java - 在 java 多线程环境中记录准确的时间戳
- c - 保护 C 中静态库的内容
- android - Firebase 对象检测器是否有任何背景信息?
- python - 通过 api 端点的函数调用模型的更有效方法?
- selenium - 我的问题是我收到一个错误(等待驱动程序服务器为 Chrome 浏览器启动超时)
- python-3.x - 使用python分离DBSCAN中每个集群的坐标
- java - 如何使用 Appium Java 客户端查找 iOS 元素?
- python - 如果在列中匹配,则 Python 链接记录
- reactjs - 结合 React Router 和 Redux 使我的重定向 KO
- node.js - 在我重新启动进程之前,大量 Node.js HTTP 请求导致计算机无法连接互联网