以非 root 用户身份管理 Docker
Docker 守护进程绑定到 Unix 套接字,而不是 TCP 端口。默认情况下, rootUnix 套接字的所有者是用户,其他用户只能使用 访问它 sudo。Docker 守护进程始终以root用户身份运行。
如果您不想在docker命令前添加sudo,请创建一个名为 的 Unix 组并向docker其中添加用户。Docker 守护进程启动时,会创建一个可供docker组成员访问的 Unix 套接字。在某些 Linux 发行版中,系统会在使用包管理器安装 Docker Engine 时自动创建此组。在这种情况下,您无需手动创建该组。
警告
该docker组向用户授予 root 级权限。有关此权限如何影响系统安全性的详细信息,请参阅 Docker Daemon 攻击面。

笔记
要以非 root 权限运行 Docker,请参阅 以非 root 用户身份运行 Docker 守护程序(无 root 模式)。
要创建docker组并添加用户:
1. 创建docker群组。
sudo groupadd docker
2. 将您的用户添加到docker组中。
$ sudo usermod -aG docker $USER
3. 注销并重新登录,以便重新评估您的群组成员资格。
如果您在虚拟机中运行 Linux,则可能需要重新启动虚拟机才能使更改生效。
您还可以运行以下命令来激活对组的更改:
newgrp docker
4. 验证您是否可以docker在没有 的情况下运行命令sudo。
docker run hello-world
此命令下载一个测试镜像并在容器中运行。容器运行时,它会打印一条消息并退出。
sudo如果您在将用户添加到组之前最初运行了 Docker CLI 命令docker,则可能会看到以下错误:
WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied
~/.docker/ 此错误表明由于之前使用了该命令,目录的权限设置不正确sudo。
要解决此问题,请删除~/.docker/目录(它会自动重新创建,但任何自定义设置都会丢失),或者使用以下命令更改其所有权和权限:
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R
配置 Docker 以使用 systemd 在启动时启动
许多现代 Linux 发行版使用systemd来管理系统启动时启动的服务。在 Debian 和 Ubuntu 上,Docker 服务默认在系统启动时启动。对于使用 systemd 的其他 Linux 发行版,要使其在启动时自动启动 Docker 和 containerd,请运行以下命令:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
要停止此行为,请disable改用。
sudo systemctl disable docker.service
sudo systemctl disable containerd.service
您可以使用 systemd 单元文件在启动时配置 Docker 服务,例如添加 HTTP 代理、为 Docker 运行时文件设置不同的目录或分区,或进行其他自定义操作。有关示例,请参阅 配置守护程序以使用代理。
配置默认日志驱动程序
Docker 提供了 日志驱动程序,用于收集和查看主机上运行的所有容器的日志数据。默认日志驱动程序json-file会将日志数据写入主机文件系统上的 JSON 格式文件。随着时间的推移,这些日志文件的大小会不断增大,从而可能导致磁盘资源耗尽。
为了避免因日志数据而过度使用磁盘的问题,请考虑以下选项之一:
• 配置json-file日志驱动程序以打开 日志轮换。
• 使用备用 日志驱动程序, 例如 默认执行日志轮换的“本地”日志驱动程序。
• 使用将日志发送到远程日志聚合器的日志驱动程序。