Docker Engine 的 Linux 安装后步骤

这些可选的安装后步骤描述了如何配置您的 Linux 主机以更好地与 Docker 协同工作。

以非 root 用户身份管理 Docker

Docker 守护程序绑定到 Unix 套接字,而不是 TCP 端口。默认情况下,拥有 Unix 套接字的是 `root` 用户,其他用户只能使用 `sudo` 访问它。Docker 守护程序始终以 `root` 用户身份运行。

如果您不想在 `docker` 命令前加上 `sudo`,请创建一个名为 `docker` 的 Unix 组并将用户添加到该组。当 Docker 守护程序启动时,它会创建一个可供 `docker` 组成员访问的 Unix 套接字。在某些 Linux 发行版中,系统会在使用包管理器安装 Docker Engine 时自动创建此组。在这种情况下,您无需手动创建该组。

警告

`docker` 组授予用户 root 级别权限。有关这如何影响系统安全性的详细信息,请参阅 Docker 守护程序攻击面

注意

要在没有 root 权限的情况下运行 Docker,请参阅 以非 root 用户身份运行 Docker 守护程序(无根模式)

要创建 `docker` 组并添加您的用户

  1. 创建 `docker` 组。

    $ sudo groupadd docker
    
  2. 将您的用户添加到 `docker` 组。

    $ sudo usermod -aG docker $USER
    
  3. 注销并重新登录,以便重新评估您的组成员身份。

    如果您在虚拟机中运行 Linux,则可能需要重新启动虚拟机才能使更改生效。

    您还可以运行以下命令来激活对组的更改

    $ newgrp docker
    
  4. 验证您可以运行 `docker` 命令而无需 `sudo`。

    $ docker run hello-world
    

    此命令下载测试镜像并在容器中运行它。容器运行时,它会打印一条消息并退出。

    如果您在将用户添加到 `docker` 组之前最初使用 `sudo` 运行 Docker CLI 命令,您可能会看到以下错误

    WARNING: Error loading config file: /home/user/.docker/config.json -
    stat /home/user/.docker/config.json: permission denied

    此错误表明由于之前使用了 `sudo` 命令,`~/.docker/` 目录的权限设置不正确。

    要解决此问题,请删除 `~/.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 格式文件。随着时间的推移,这些日志文件的大小会不断增加,从而可能导致磁盘资源耗尽。

为避免日志数据过度使用磁盘的问题,请考虑以下选项之一

后续步骤

  • 查看Docker 工作坊,学习如何构建镜像并将其作为容器化应用程序运行。