1. 系统重装后的基础环境准备
刚完成Linux系统重装时,就像拿到一台刚出厂的新设备。我通常会先做三件事:更新系统、安装基础工具、配置SSH访问。这些看似与Docker无关的操作,实际上能避免后续很多奇怪的问题。
以Ubuntu 22.04为例,终端里依次执行:
sudo apt update && sudo apt upgrade -y sudo apt install -y curl wget git vim net-tools注意:不同Linux发行版的包管理命令不同。如果是CentOS/RHEL系,需要将apt换成yum或dnf
2. Docker安装的三种标准姿势
2.1 官方推荐安装方式
Docker官方文档永远是最权威的参考。他们的安装脚本会处理所有依赖关系:
curl -fsSL https://get.docker.com | sudo sh这个命令背后其实做了以下几件事:
- 添加Docker的官方GPG密钥
- 设置稳定的软件仓库
- 安装最新版Docker引擎
- 创建docker用户组
2.2 包管理器直接安装
对于追求稳定性的生产环境,我更喜欢用系统自带的包管理器:
sudo apt install -y docker.io这种方式安装的版本可能不是最新的,但经过发行版厂商的充分测试。我曾经在Ubuntu 20.04上遇到过官方最新版Docker与系统内核的兼容性问题,用系统仓库版本就完全正常。
2.3 二进制手动安装
当需要在没有root权限的环境部署时,可以下载静态二进制包:
VERSION=24.0.7 curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-${VERSION}.tgz | tar -xz mv docker/* /usr/bin/这种方式适合特殊环境,但需要自行处理依赖和更新。
3. 安装后的关键配置
3.1 用户组与权限管理
刚安装完Docker时,普通用户运行docker命令会报权限错误。解决方法不是盲目使用sudo,而是将用户加入docker组:
sudo usermod -aG docker $USER newgrp docker # 立即生效重要安全提示:docker组实际上具有root等效权限,生产环境中需要严格控制组成员
3.2 镜像加速配置
国内访问Docker Hub速度堪忧,修改/etc/docker/daemon.json配置国内镜像源:
{ "registry-mirrors": [ "https://registry.cn-hangzhou.aliyuncs.com", "https://hub-mirror.c.163.com" ] }配置完成后需要重启服务:
sudo systemctl restart docker4. 验证安装的正确姿势
很多人用docker run hello-world就结束了验证,这远远不够。我建议的完整验证流程:
- 基础功能测试
docker --version docker info- 网络连通性测试
docker pull alpine docker run --rm alpine ping -c 4 www.baidu.com- 存储卷测试
docker run --rm -v $(pwd):/data alpine ls /data5. 常见问题排错指南
5.1 内核兼容性问题
如果遇到类似"Your kernel does not support cgroup..."的错误,可能是内核版本过旧。解决方案:
# 查看内核版本 uname -r # 对于较旧的内核需要升级或安装额外模块 sudo apt install linux-image-extra-virtual5.2 存储驱动问题
特别是重装系统后,可能会遇到存储驱动不匹配:
# 查看当前存储驱动 docker info | grep Storage # 修改驱动类型 sudo vim /etc/docker/daemon.json添加内容:
{ "storage-driver": "overlay2" }5.3 防火墙干扰
Firewall和iptables规则可能导致容器网络异常:
# 临时关闭防火墙排查 sudo systemctl stop firewalld # 或添加防火墙规则 sudo firewall-cmd --permanent --zone=trusted --add-interface=docker06. 生产环境优化建议
6.1 日志轮转配置
默认情况下Docker容器日志会无限增长,需要修改daemon.json:
{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }6.2 存储路径修改
系统盘空间不足时,可以迁移Docker根目录:
sudo systemctl stop docker sudo rsync -avz /var/lib/docker /new/path/ sudo vim /etc/docker/daemon.json添加:
{ "data-root": "/new/path/docker" }6.3 内存与CPU限制
对于资源紧张的环境,可以在启动时添加限制:
docker run -it --memory="1g" --cpus="1.5" ubuntu7. 进阶工具链配置
7.1 Docker Compose安装
虽然现在Docker Desktop自带compose,但服务器环境还是需要单独安装:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose7.2 容器监控方案
推荐使用cAdvisor+Prometheus+Grafana组合:
docker run -d \ --name=cadvisor \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:ro \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --publish=8080:8080 \ google/cadvisor:latest8. 安全加固措施
8.1 启用用户命名空间
在/etc/docker/daemon.json中添加:
{ "userns-remap": "default" }8.2 禁用特权容器
docker run --security-opt=no-new-privileges ubuntu8.3 定期漏洞扫描
docker scan ubuntu