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. 验证您可以在没有 sudo 的情况下运行 docker 命令。

    $ 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

    此错误表明 ~/.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 自动在启动时启动 Docker 和 containerd,对于其他 Linux 发行版,请运行以下命令

$ 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 研讨会,了解如何构建镜像并将其作为容器化应用程序运行。