【走进Docker的世界】Docker环境搭建
Docker 环境搭建
1. 系统兼容性检查
目标:验证操作系统版本、内核、硬件支持及存储空间,确保满足Docker运行要求,避免后续安装出现兼容性问题。
# 检查操作系统版本(CentOS/RHEL示例)
cat /etc/redhat-release
# 输出示例:CentOS Linux release 7.9.2009 (Core)# 检查内核版本(最低要求3.10+,推荐5.15+)
uname -r
# 示例输出:4.18.0-477.15.1.el8_8.x86_64# 验证CPU虚拟化支持(数值≥1表示支持)
egrep -c '(vmx|svm)' /proc/cpuinfo# 检查存储空间(/var/lib/docker为默认数据目录)
df -h /var/lib/
[!NOTE]
- CentOS 7.4以下版本需先升级系统
- CentOS 8需启用powertools仓库:
dnf config-manager --set-enabled powertools
- 最小化安装系统建议安装基础工具:
yum install -y wget vim net-tools
2. 系统预配置
目标:调整安全策略和内核参数,为Docker提供必要的运行环境,解决权限和网络问题。
2.1 安全设置调整
# 禁用SELinux(防止容器权限问题)
getenforce # 检查状态
setenforce 0 # 临时禁用
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 永久禁用# 生产环境防火墙配置
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --reload# 关闭swap(Kubernetes环境必需)
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab # 注释swap配置
2.2 内核参数优化
# 加载必要内核模块
lsmod | grep br_netfilter || {modprobe br_netfilterecho "br_netfilter" >> /etc/modules-load.d/docker.conf
}# 配置网络参数
cat > /etc/sysctl.d/docker.conf <<'EOF'
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
EOFsysctl -p /etc/sysctl.d/docker.conf
3. Docker安装步骤
目标:清理旧版本并安装稳定版Docker,使用国内源提升安装速度。
3.1 清理旧版本
yum remove -y docker* containerd runc
3.2 配置软件源
# 使用阿里云镜像源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean all && yum makecache fast
3.3 安装指定版本
# 查看可用版本
yum list docker-ce --showduplicates | sort -r# 安装LTS版本
yum install -y docker-ce-24.0.7 docker-ce-cli-24.0.7 containerd.io# 验证安装
docker --version
4. 服务配置
目标:启动服务并配置镜像加速,调整权限简化操作。
4.1 启动Docker服务
systemctl start docker
systemctl enable docker
systemctl status docker
4.2 配置镜像加速
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<'EOF'
{"registry-mirrors": ["https://<你的阿里云加速地址>","https://mirror.baidubce.com"]
}
EOFsystemctl daemon-reload
systemctl restart docker
4.3 权限设置
usermod -aG docker $USER
newgrp docker
docker ps
5. 功能测试
目标:验证Docker核心功能是否正常工作。
# 基础功能测试
docker run --rm hello-world# 下载速度测试
time docker pull nginx# 应用容器测试
docker run -d -p 80:80 --name test-nginx nginx
curl localhost
docker stop test-nginx && docker rm test-nginx
6. 常见问题解决方案
6.1 服务启动失败
journalctl -u docker -f
6.2 存储驱动冲突
systemctl stop docker
rm -rf /var/lib/docker
cat > /etc/docker/daemon.json <<EOF
{"storage-driver": "overlay2","storage-opts": ["overlay2.override_kernel_check=true"]
}
EOF
systemctl start docker
6.3 容器网络故障排查(外网连接异常)
# 排查步骤:
# 1. 检查IP转发状态(需确保开启)
sysctl net.ipv4.ip_forward # 正常输出应为1# 2. 检测DNS配置(需配置有效DNS服务器)
cat /etc/resolv.conf # 应包含114.114.114.114等有效DNS地址# 3. 网络重置方案(终极解决措施)
pkill docker
iptables -t nat -F
ip link set docker0 down
brctl delbr docker0
systemctl restart docker# AWS EC2特殊配置(修复MTU导致的网络问题):
sudo service network restart
sudo ifconfig eth0 mtu 1500
建议按照顺序执行上述检查步骤,每完成一项立即验证网络状态,确保及时发现问题并解决。