Linux下Docker Engine安装后的一些配置步骤

一些安装后的配置令Linux主机可以更好地与Docker配合使用。

0x01 以非root用户身份管理Docker

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

如果不想在docker命令前加上sudo,那么创建一个名为docker的Unix组,并在其中添加用户。当Docker守护进程启动时, 创建一个可由docker组的成员访问的Unix套接字。在某些Linux上 发行版上,系统会在使用包管理器安装 Docker Engine时自动创建此组,如果是那样的话,就没有必要手动创建组了。
警告
docker组向用户赋予root级别权限。有关这些如何影响系统安全性的详细信息,请参考 Docker守护进程安全资料。
注意

要在没有root权限的情况下运行Docker,请参考以非root用户身份运行Docker守护进程(Rootless模式)。

要创建docker组并添加你的用户,请执行以下操作:

  1. 创建docker组。
bash 复制代码
$ sudo groupadd docker
  1. 将您的用户添加到docker组。
bash 复制代码
$ sudo usermod -aG docker $USER
  1. 注销并重新登录,以便重赋予你的组成员身份。
    如果在虚拟机中运行Linux,则可能需要重新启动虚拟机以使更改生效。
    也可以运行以下命令来激活对组的更改:
bash 复制代码
$ newgrp docker
  1. 验证您是否可以在没有sudo的情况下运行docker命令。
powershell 复制代码
$ docker run hello-world

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

如果在添加用户到docker组之前此用户使用sudo运行过Docker CLI命令,可能会看到以下错误:

bash 复制代码
WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied

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

要解决此问题,请删除~/.docker/目录(它会自动重新创建,但任何自定义设置都将丢失),或更改其所有权限, 使用以下命令设置权限:

bash 复制代码
 $ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
 $ sudo chmod g+rwx "$HOME/.docker" -R

0x02 使用systemd将Docker配置为开机自启动

许多现代Linux发行版都使用 systemd来管理系统引导时启动哪些服务。在Debian和Ubuntu上,Docker服务默认在系统引导时启动。对于使用systemd的其他Linux发行版,要开机自动启动Docker和containerd, 运行以下命令:

bash 复制代码
$ sudo systemctl enable docker.service
$ sudo systemctl enable containerd.service

要停止此操作,请改用disable。

bash 复制代码
$ sudo systemctl disable docker.service
$ sudo systemctl disable containerd.service

如果需要添加HTTP代理,为 Docker运行时文件进行其他自定义目录或分区,请参考自定义systemd Docker守护程序选项。

0x03 配置默认日志记录驱动程序

Docker提供日志记录驱动程序来收集和查看来自主机上运行的所有容器的日志数据。默认日志记录驱动程序json-file将日志以JSON格式数据写入主机文件系统。随着时间的推移,这些日志文件的大小会扩大, 磁盘资源可能耗尽。

若要避免日志数据过度使用磁盘的问题,考虑以下方法之一:

json-file日志记录驱动程序配置为打开日志轮换

使用替代日志记录驱动器例如 "本地"日志驱动程序并在默认情况下执行日志循环。

使用日志记录驱动程序将日志发送到远程日志记录服务器。

相关推荐
空中楼阁,梦幻泡影21 分钟前
Docker安装MinIO
运维·docker·容器·minio·存储
qq_4017004129 分钟前
Linux文件锁解决多进程并发
linux·服务器·算法
南棱笑笑生40 分钟前
20251213给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-6.1】系统时适配type-C0
linux·c语言·开发语言·rockchip
RisunJan2 小时前
Linux命令-gpasswd命令(管理用户组的重要工具)
linux·运维·服务器
Selegant2 小时前
Docker 搭建 MySQL 主从服务实战操作详解
mysql·docker·容器
where happens2 小时前
centos创建目录并授予权限
linux·运维·服务器·centos
好好学操作系统2 小时前
autodl 保存 数据 跨区
linux·运维·服务器
dbitc2 小时前
WIN11把WSL2移动安装目录
linux·运维·ubuntu·wsl
KingRumn2 小时前
Linux同步机制之信号量
linux·服务器·网络
BullSmall3 小时前
linux 根据端口查看进程
linux·运维·服务器