Docker环境搭建

本文最后更新于:3 年前

前言

在实际的后端开发和运维工作中,Docker 已经成为几乎不可或缺的基础设施。本文从最基础的网络环境检查开始,以最小安装的Linux系统(CentOS 7与Ubuntu 24.04)为例,系统梳理了从网络连通性验证、DNS 配置、国内软件源切换,到 Docker Engine 与 Docker Compose 安装、镜像加速配置以及容器网络验证的完整流程。文章以“最小可用”为目标,所有步骤均可直接在最小安装环境中执行,适合开发、测试及服务器初始化场景使用。

网络基础检查(通用)

  1. 确认网卡是否识别

    1
    ip addr
    • 至少应看到 eth0 / ens33 / enp0s3 等网卡;
    • 若只有 lo,说明驱动或虚拟机网络未配置好。
  2. 确认是否获取到IP

    1
    ip route

    应看到类似:

    1
    default via 192.168.1.1 dev ens33
  3. 基础连通性测试

    1
    ping -c 3 223.5.5.5

    能ping通IP → 网络层OK

    再测域名:

    1
    ping -c 3 www.baidu.com

    IP通、域名不通 → DNS问题

DNS配置(临时)

国内DNS

  • 阿里:223.5.5.5
  • 腾讯:119.29.29.29

临时配置

1
cat /etc/resolv.conf

添加或修改为:

1
2
nameserver 223.5.5.5
nameserver 119.29.29.29

注意:/etc/resolv.conf 可能会被 NetworkManager / systemd-resolved 自动覆盖,因此仅适合作为临时调试方案,永久配置请使用 nmclinetplan

CentOS 7

1. 镜像源配置

  1. 关闭或确认SELinux(最小环境建议先关)

    1
    2
    getenforce
    setenforce 0
  2. 备份原仓库

    1
    2
    mkdir -p /etc/yum.repos.d/backup
    mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
  3. 下载阿里云repo

    1
    2
    curl -o /etc/yum.repos.d/CentOS-Base.repo \
    https://mirrors.aliyun.com/repo/Centos-7.repo
  4. 清缓存并生成索引

    1
    2
    yum clean all
    yum makecache

2. 网络连接配置

  1. 列出当前系统中所有“网络连接配置”

    1
    nmcli connection show

    会看到类似

    1
    2
    NAME   UUID                                  TYPE      DEVICE 
    ens33 dabf9abc-5e1d-44da-bfb2-b85a3d0efc61 ethernet ens33

    其中 ens33 为网络连接的名称

  2. 查看网卡状态

    1
    nmcli device status
  3. 查看某个连接的完整配置

    1
    nmcli connection show ens33
  4. 给连接设置DNS

    1
    nmcli connection modify ens33 ipv4.dns "223.5.5.5 119.29.29.29"
  5. 设置自动获取IP

    1
    nmcli connection modify ens33 ipv4.method auto
  6. 设置固定IP

    1
    2
    3
    4
    5
    nmcli 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"
  7. 让配置生效

    1
    2
    nmcli connection down ens33
    nmcli connection up ens33

3. 常用软件安装

1
2
3
4
5
6
yum install -y \
curl \
wget \
net-tools \
vim \
bash-completion

4. 安装Docker + Docker Compose

  1. 卸载旧版本

    1
    2
    3
    4
    5
    6
    7
    8
    yum remove -y docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine
  2. 安装依赖

    1
    yum install -y yum-utils device-mapper-persistent-data lvm2
  3. 添加Docker官方仓库

    1
    2
    3
    yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  4. 安装Docker Engine

    1
    yum install -y docker-ce docker-ce-cli containerd.io
  5. 重新加载、启动Docker并设置开机自启

    1
    2
    3
    systemctl daemon-reload
    systemctl start docker
    systemctl enable docker
  6. 验证

    1
    2
    docker version
    docker compose version
  7. 配置Docker国内镜像加速(镜像加速地址可能因政策或维护原因失效,如拉取异常请自行替换或精简列表)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    cat > /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
    2
    systemctl daemon-reload
    systemctl restart docker
  8. 测试拉镜像

    1
    2
    docker pull hello-world
    docker pull busybox
  9. 启动容器并测试容器网络

    1
    docker run --rm busybox ping -c 3 www.baidu.com
  10. 查看Docker运行信息

    1
    docker info | grep -i mirror -A 5

Ubuntu

1. 镜像源配置

  1. 检查版本

    1
    lsb_release -a
  2. 备份 sources.list

    1
    cp /etc/apt/sources.list /etc/apt/sources.list.bak
  3. 根据系统版本代码配置apt国内镜像(以 noble 为例)

    1
    2
    3
    4
    5
    6
    cat > /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
  4. 更新索引

    1
    apt update

2. 网络连接配置

  1. 列出当前系统的网卡

    1
    ip link

    会看到类似:

    1
    2
    3
    4
    5
    1: 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 为网卡名称

  2. 查看网卡IP情况

    1
    ip addr show ens33

    如果能看到 inet xxx.xxx.xxx.xxx/24,说明已获取IP

  3. 查看netplan配置文件

    1
    ls /etc/netplan/

    通常会看到类似:

    1
    50-cloud-init.yaml
  4. 查看当前netplan配置内容

    1
    cat /etc/netplan/50-cloud-init.yaml

    常见初始内容:

    1
    2
    3
    4
    5
    network:
    version: 2
    ethernets:
    ens33:
    dhcp4: true
  5. 设置DNS(保持DHCP获取IP)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    cat > /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
  6. 设置固定IP

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    cat > /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
  7. 让配置生效

    1
    netplan apply
  8. 验证DNS是否生效

    1
    resolvectl status

3. 常用软件安装

1
2
3
4
5
6
apt install -y \
curl \
wget \
net-tools \
vim \
bash-completion

4. 安装Docker + Docker Compose

  1. 卸载旧版本

    1
    apt remove -y docker docker-engine docker.io docker-compose
  2. 安装依赖

    1
    2
    apt update
    apt install -y ca-certificates curl gnupg lsb-release
  3. 添加Docker官方GPG key

    1
    2
    3
    4
    mkdir -p /etc/apt/keyrings

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
    | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  4. 添加Docker软件源

    1
    2
    3
    4
    5
    echo \
    "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
  5. 安装Docker Engine

    1
    2
    apt update
    apt install -y docker-ce docker-ce-cli containerd.io
  6. 启动并设置开机自启

1
2
systemctl start docker
systemctl enable docker
  1. 验证

    1
    2
    docker version
    docker compose version
  2. 配置Docker国内镜像加速(镜像加速地址可能因政策或维护原因失效,如拉取异常请自行替换或精简列表)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    cat > /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
    2
    systemctl daemon-reload
    systemctl restart docker
  3. 测试拉镜像

    1
    2
    docker pull hello-world
    docker pull busybox
  4. 启动容器并测试容器网络

    1
    docker run --rm busybox ping -c 3 www.baidu.com
  5. 查看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 协议 ,转载请注明出处!