Docker环境搭建
本文最后更新于:3 年前
前言
在实际的后端开发和运维工作中,Docker 已经成为几乎不可或缺的基础设施。本文从最基础的网络环境检查开始,以最小安装的Linux系统(CentOS 7与Ubuntu 24.04)为例,系统梳理了从网络连通性验证、DNS 配置、国内软件源切换,到 Docker Engine 与 Docker Compose 安装、镜像加速配置以及容器网络验证的完整流程。文章以“最小可用”为目标,所有步骤均可直接在最小安装环境中执行,适合开发、测试及服务器初始化场景使用。
网络基础检查(通用)
确认网卡是否识别
1
ip addr- 至少应看到
eth0/ens33/enp0s3等网卡; - 若只有
lo,说明驱动或虚拟机网络未配置好。
- 至少应看到
确认是否获取到IP
1
ip route应看到类似:
1
default via 192.168.1.1 dev ens33基础连通性测试
1
ping -c 3 223.5.5.5能ping通IP → 网络层OK
再测域名:
1
ping -c 3 www.baidu.comIP通、域名不通 → DNS问题
DNS配置(临时)
国内DNS
- 阿里:223.5.5.5
- 腾讯:119.29.29.29
临时配置
1 | |
添加或修改为:
1 | |
注意:/etc/resolv.conf 可能会被 NetworkManager / systemd-resolved 自动覆盖,因此仅适合作为临时调试方案,永久配置请使用 nmcli 或 netplan。
CentOS 7
1. 镜像源配置
关闭或确认SELinux(最小环境建议先关)
1
2getenforce
setenforce 0备份原仓库
1
2mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/下载阿里云repo
1
2curl -o /etc/yum.repos.d/CentOS-Base.repo \
https://mirrors.aliyun.com/repo/Centos-7.repo清缓存并生成索引
1
2yum clean all
yum makecache
2. 网络连接配置
列出当前系统中所有“网络连接配置”
1
nmcli connection show会看到类似
1
2NAME UUID TYPE DEVICE
ens33 dabf9abc-5e1d-44da-bfb2-b85a3d0efc61 ethernet ens33其中
ens33为网络连接的名称查看网卡状态
1
nmcli device status查看某个连接的完整配置
1
nmcli connection show ens33给连接设置DNS
1
nmcli connection modify ens33 ipv4.dns "223.5.5.5 119.29.29.29"设置自动获取IP
1
nmcli connection modify ens33 ipv4.method auto设置固定IP
1
2
3
4
5nmcli connection modify ens33 \
ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "223.5.5.5 119.29.29.29"让配置生效
1
2nmcli connection down ens33
nmcli connection up ens33
3. 常用软件安装
1 | |
4. 安装Docker + Docker Compose
卸载旧版本
1
2
3
4
5
6
7
8yum remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine安装依赖
1
yum install -y yum-utils device-mapper-persistent-data lvm2添加Docker官方仓库
1
2
3yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo安装Docker Engine
1
yum install -y docker-ce docker-ce-cli containerd.io重新加载、启动Docker并设置开机自启
1
2
3systemctl daemon-reload
systemctl start docker
systemctl enable docker验证
1
2docker version
docker compose version配置Docker国内镜像加速(镜像加速地址可能因政策或维护原因失效,如拉取异常请自行替换或精简列表)
1
2
3
4
5
6
7
8
9
10
11
12
13cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": [
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn",
"https://6k0ibwjk.mirror.aliyuncs.com"
]
}
EOF重载并重启
1
2systemctl daemon-reload
systemctl restart docker测试拉镜像
1
2docker pull hello-world
docker pull busybox启动容器并测试容器网络
1
docker run --rm busybox ping -c 3 www.baidu.com查看Docker运行信息
1
docker info | grep -i mirror -A 5
Ubuntu
1. 镜像源配置
检查版本
1
lsb_release -a备份
sources.list1
cp /etc/apt/sources.list /etc/apt/sources.list.bak根据系统版本代码配置apt国内镜像(以
noble为例)1
2
3
4
5
6cat > /etc/apt/sources.list << EOF
deb https://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse
EOF更新索引
1
apt update
2. 网络连接配置
列出当前系统的网卡
1
ip link会看到类似:
1
2
3
4
51: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:21:d1:64 brd ff:ff:ff:ff:ff:ff
altname enp2s1其中
ens33为网卡名称查看网卡IP情况
1
ip addr show ens33如果能看到
inet xxx.xxx.xxx.xxx/24,说明已获取IP查看netplan配置文件
1
ls /etc/netplan/通常会看到类似:
1
50-cloud-init.yaml查看当前netplan配置内容
1
cat /etc/netplan/50-cloud-init.yaml常见初始内容:
1
2
3
4
5network:
version: 2
ethernets:
ens33:
dhcp4: true设置DNS(保持DHCP获取IP)
1
2
3
4
5
6
7
8
9
10
11cat > /etc/netplan/50-cloud-init.yaml << EOF
network:
version: 2
ethernets:
ens33:
dhcp4: true
nameservers:
addresses:
- 223.5.5.5
- 119.29.29.29
EOF设置固定IP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16cat > /etc/netplan/50-cloud-init.yaml << EOF
network:
version: 2
ethernets:
ens33:
dhcp4: false
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 223.5.5.5
- 119.29.29.29
EOF让配置生效
1
netplan apply验证DNS是否生效
1
resolvectl status
3. 常用软件安装
1 | |
4. 安装Docker + Docker Compose
卸载旧版本
1
apt remove -y docker docker-engine docker.io docker-compose安装依赖
1
2apt update
apt install -y ca-certificates curl gnupg lsb-release添加Docker官方GPG key
1
2
3
4mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| gpg --dearmor -o /etc/apt/keyrings/docker.gpg添加Docker软件源
1
2
3
4
5echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" \
| tee /etc/apt/sources.list.d/docker.list > /dev/null安装Docker Engine
1
2apt update
apt install -y docker-ce docker-ce-cli containerd.io启动并设置开机自启
1 | |
验证
1
2docker version
docker compose version配置Docker国内镜像加速(镜像加速地址可能因政策或维护原因失效,如拉取异常请自行替换或精简列表)
1
2
3
4
5
6
7
8
9
10
11
12
13cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": [
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn",
"https://6k0ibwjk.mirror.aliyuncs.com"
]
}
EOF重载并重启
1
2systemctl daemon-reload
systemctl restart docker测试拉镜像
1
2docker pull hello-world
docker pull busybox启动容器并测试容器网络
1
docker run --rm busybox ping -c 3 www.baidu.com查看Docker运行信息
1
docker info | grep -i mirror -A 5
总结
通过本文的步骤,可以在CentOS 7和Ubuntu 24.04的最小安装系统中,快速且稳定地完成Docker运行环境的搭建。在正式安装Docker之前,对基础网络环境进行系统性检查尤为重要。在完成Docker Engine与Docker Compose安装并验证容器网络正常后,即可进一步部署MySQL、Redis、Nginx等常见服务。后续如遇镜像拉取缓慢、DNS解析异常或容器无法联网等问题,也可以基于本文的排查思路快速定位原因。希望本文能作为一份稳定可靠的环境初始化参考,为后续的容器化部署打下良好的基础。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!