Docker 26.0 安装后 5 项必做配置:镜像加速、用户组与存储驱动优化
Docker 26.0 安装后 5 项必做配置:镜像加速、用户组与存储驱动优化
刚完成Docker安装的新手常会遇到"能用但不好用"的困境——镜像下载慢如蜗牛、每次命令都要加sudo、磁盘空间莫名被占满...这些问题其实都源于安装后的基础配置缺失。本文将手把手带你完成5项关键优化,让你的Docker环境真正达到"开箱即用"的生产级状态。
1. 镜像加速:告别下载等待
国内用户遇到的第一个拦路虎就是镜像下载速度。Docker Hub的默认服务器位于国外,直接拉取镜像经常只有几十KB/s的速度。通过配置国内镜像加速器,速度可提升10倍以上。
操作步骤:
- 登录阿里云容器镜像服务(免费注册)
- 进入「镜像加速器」页面获取专属加速地址
-
创建或修改
/etc/docker/daemon.json文件:
{
"registry-mirrors": ["https://{your_id}.mirror.aliyuncs.com"]
}
- 重启Docker服务生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
验证配置:
docker info | grep -A 1 Mirrors
应显示你配置的镜像地址。
注意:不同云服务商提供的加速地址格式不同,腾讯云为
https://mirror.ccs.tencentyun.com,华为云为https://{id}.swr.myhuaweicloud.com
2. 非root用户操作权限配置
默认情况下,只有root用户或通过sudo才能执行docker命令,这既不方便也不安全。通过将普通用户加入docker用户组可解决此问题。
详细操作流程:
-
创建docker组(如果不存在):
sudo groupadd docker -
将当前用户加入组:
sudo usermod -aG docker $USER -
立即生效组权限变更:
newgrp docker -
验证配置:
docker run hello-world应能正常执行而不需要sudo
权限对照表:
| 配置状态 | 命令示例 | 所需前缀 | 安全风险 |
|---|---|---|---|
| 默认状态 | docker ps | sudo | 低 |
| 配置后 | docker ps | 无 | 中* |
| 生产推荐 | docker ps | sudo | 低 |
*提示:虽然方便,但给普通用户docker权限等同于给予其root权限。生产环境建议配合SELinux等安全模块使用
3. 日志轮转:避免磁盘爆炸
Docker容器默认会持续输出日志到JSON文件,长期运行可能导致磁盘空间耗尽。我们需要配置日志轮转策略。
配置方法:
修改
/etc/docker/daemon.json
(与镜像加速配置合并):
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
参数说明:
-
max-size:单个日志文件最大容量 -
max-file:保留的日志文件个数
紧急清理现有日志:
# 查看日志磁盘占用
docker system df
# 清理所有容器日志
truncate -s 0 /var/lib/docker/containers/*/*-json.log
4. 存储驱动优化
Docker使用存储驱动来管理镜像和容器的磁盘存储。不同Linux发行版的推荐驱动不同:
| 发行版 | 默认驱动 | 推荐驱动 | 切换命令 |
|---|---|---|---|
| CentOS | devicemapper | overlay2 |
修改
/etc/docker/daemon.json
|
| Ubuntu | overlay2 | overlay2 | 无需修改 |
| Debian | overlay2 | overlay2 | 无需修改 |
检查当前驱动:
docker info | grep "Storage Driver"
切换到overlay2(CentOS):
-
停止Docker服务:
sudo systemctl stop docker -
备份现有数据:
sudo cp -r /var/lib/docker /var/lib/docker.bak -
修改配置文件:
{ "storage-driver": "overlay2" } -
重启服务:
sudo systemctl start docker
5. 网络与防火墙调优
Docker会创建自定义网络链,可能和系统防火墙规则冲突。典型问题包括:
- 容器无法访问外网
- 主机无法访问容器服务
- 容器间网络不通
解决方案:
-
检查防火墙状态:
sudo iptables -L -n -v --line-numbers -
添加防火墙规则(示例放行Docker网络):
sudo iptables -I INPUT -i docker0 -j ACCEPT -
持久化规则(CentOS):
sudo service iptables save
网络问题排查命令:
# 查看容器IP
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名
# 测试容器间连通性
docker exec -it 容器1 ping 容器IP
一键配置脚本
将上述所有优化整合为一个脚本
docker-postinstall.sh
:
#!/bin/bash
# Docker 26.0+ 安装后优化脚本
# 镜像加速
echo '{
"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"],
"log-driver": "json-file",
"log-opts": {"max-size": "10m", "max-file": "3"},
"storage-driver": "overlay2"
}' | sudo tee /etc/docker/daemon.json > /dev/null
# 用户组配置
sudo groupadd docker 2>/dev/null
sudo usermod -aG docker $USER
# 防火墙规则
sudo iptables -I INPUT -i docker0 -j ACCEPT
sudo service iptables save 2>/dev/null || true
# 重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker
echo "配置完成,请重新登录使组权限生效"
使用方法:
chmod +x docker-postinstall.sh
./docker-postinstall.sh
这些配置看似简单,却能解决80%的Docker使用痛点。特别是在团队开发环境中,统一的基准配置能大幅减少"在我机器上是好的"这类问题。
更多推荐
所有评论(0)