Docker 安装与第一个容器:Ubuntu、CentOS、EulerOS 完整安装指南
手把手讲解在 Ubuntu 22.04、CentOS 7/8、麒麟/EulerOS 上安装 Docker CE 的完整流程:官方源配置、国内镜像加速、常见安装错误处理、daemon.json 基础配置,以及运行第一个容器验证安装成功——包含运维环境中最常见的离线安装方案。
安装 Docker 是学习容器的第一步,但在企业环境中经常遇到网络限制、操作系统版本差异、权限问题等障碍。本文覆盖主流 Linux 发行版的安装方式,并重点讲解国内网络环境下和离线环境的安装方案。
安装前准备
# 检查操作系统版本
cat /etc/os-release
uname -r # 内核版本(Docker 要求 >= 3.10,推荐 >= 4.15)
# 检查现有 Docker(如有旧版本需先卸载)
docker --version 2>/dev/null || echo "未安装"
# 确保防火墙不影响测试(生产环境按需配置)
# Ubuntu: ufw status
# CentOS: firewall-cmd --state
一、Ubuntu 22.04 安装
方法1:官方脚本(推荐,网络通畅时)
# 一键安装脚本(自动识别发行版)
curl -fsSL https://get.docker.com | sh
# 国内网络使用阿里云镜像源
curl -fsSL https://get.docker.com | sh -s -- --mirror Aliyun
方法2:手动添加 APT 源
# 1. 安装必要依赖
sudo apt-get update
sudo apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release
# 2. 添加 Docker GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 3. 添加 APT 仓库(使用阿里云镜像)
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 4. 安装 Docker CE
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 5. 启动并设置开机自启
sudo systemctl enable --now docker
# 6. 验证
docker version
非 root 用户使用 Docker
# 将当前用户加入 docker 组(避免每次 sudo)
sudo usermod -aG docker $USER
# 重新登录后生效,或临时刷新组
newgrp docker
# 验证(无 sudo)
docker ps
二、CentOS 7 / CentOS 8(AlmaLinux/Rocky Linux)安装
CentOS 7
# 1. 卸载旧版本
sudo yum remove -y docker docker-client docker-client-latest \
docker-common docker-latest docker-latest-logrotate \
docker-logrotate docker-engine
# 2. 安装工具包
sudo yum install -y yum-utils
# 3. 添加 yum 源(阿里云)
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4. 安装
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 5. 启动
sudo systemctl enable --now docker
# 6. 验证
docker run hello-world
CentOS 8 / AlmaLinux 8 / Rocky Linux 8
# CentOS 8 默认用 Podman,需先处理冲突
sudo dnf remove -y podman buildah # 如有冲突
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# CentOS 8 需要指定 containerd.io 版本
sudo dnf install -y docker-ce docker-ce-cli \
--allowerasing # 允许替换冲突包
sudo systemctl enable --now docker
三、麒麟 OS / EulerOS / OpenEuler(信创环境)
# 麒麟 V10(基于 CentOS 8/RHEL 8)
# OpenEuler 22.03 LTS
# 方法1:使用 OpenEuler 官方仓库(推荐)
sudo dnf install -y docker
# 方法2:使用 CentOS 8 的 docker-ce 源(兼容)
sudo dnf config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 注意:麒麟 ARM64(飞腾/鲲鹏)需使用 ARM 版
# 安装命令相同,yum/dnf 会自动选择 aarch64 包
sudo systemctl enable --now docker
docker version # Server 的 Architecture 应该是 aarch64
四、离线安装(内网/隔离环境)
企业生产环境通常不能访问公网,需要离线安装。
步骤1:在有网机器上下载安装包
# 下载 Docker CE 离线包(选择对应系统版本)
# Ubuntu:
apt-get download docker-ce docker-ce-cli containerd.io docker-compose-plugin
# CentOS(下载 RPM 包):
yumdownloader --resolve docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 或直接从官网下载二进制包(最简单)
# https://download.docker.com/linux/static/stable/x86_64/
DOCKER_VERSION="27.3.1"
wget https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKER_VERSION}.tgz
步骤2:传输到内网机器并安装
# 使用二进制包安装(最通用,不依赖包管理器)
DOCKER_VERSION="27.3.1"
tar xzf docker-${DOCKER_VERSION}.tgz
# 复制二进制到 PATH
sudo cp docker/* /usr/local/bin/
# 创建 systemd service 文件
sudo tee /etc/systemd/system/docker.service << 'EOF'
[Unit]
Description=Docker Application Container Engine
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
Restart=always
RestartSec=2
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now docker
五、配置国内镜像加速
安装完成后,配置镜像加速器是必须的步骤(不然 pull 镜像极慢)。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://hub-mirror.c.163.com",
"https://docker.m.daocloud.io"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证配置生效
docker info | grep -A5 "Registry Mirrors"
六、运行第一个容器
# 经典验证:hello-world
docker run hello-world
# 输出解读:
# Unable to find image 'hello-world:latest' locally ← 本地没有,从 Hub 拉取
# latest: Pulling from library/hello-world ← 正在拉取
# ...
# Hello from Docker! ← 容器运行成功
# This message shows that your installation appears to be working correctly.
# 运行一个交互式 Ubuntu 容器(感受容器隔离)
docker run -it ubuntu:22.04 bash
# 现在你在容器内部!
root@a1b2c3d4:/# hostname # 容器的 hostname(随机 ID)
root@a1b2c3d4:/# ps aux # 只能看到容器内的进程
root@a1b2c3d4:/# exit # 退出容器(容器停止)
# 运行 Nginx 并访问
docker run -d -p 8080:80 --name my-nginx nginx
curl http://localhost:8080
# 返回 Nginx 欢迎页面
七、常见安装问题
问题1:Permission denied 访问 docker.sock
# 错误:permission denied while trying to connect to the Docker daemon socket
# 原因:当前用户不在 docker 组
# 解决:
sudo usermod -aG docker $USER
newgrp docker # 或重新登录
问题2:安装后 docker 服务启动失败
# 查看详细错误
sudo journalctl -u docker --no-pager -n 50
# 常见原因1:storage driver 不支持
# → 删除 daemon.json 中的 storage-driver,重启
# 常见原因2:内核版本过低(CentOS 7 默认 3.10)
uname -r
# 如果是 3.10.x,升级内核或使用 devicemapper 存储驱动(不推荐)
问题3:镜像拉取超时
# 测试连通性
docker pull hello-world --disable-content-trust
# 如果超时,检查镜像加速配置
docker info | grep Mirrors
# 企业内网完全隔离:配置 HTTP 代理
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf << 'EOF'
[Service]
Environment="HTTP_PROXY=http://proxy.company.com:8080"
Environment="HTTPS_PROXY=http://proxy.company.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1,harbor.company.com"
EOF
sudo systemctl daemon-reload && sudo systemctl restart docker
问题4:CentOS 8 的包冲突
# 错误:Problem: package docker-ce-3:... requires containerd.io >= 1.6.4
# 原因:CentOS 8 的 containerd 版本太旧
# 解决:指定版本
sudo dnf install -y \
https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.7.20-3.1.el8.x86_64.rpm
sudo dnf install -y docker-ce docker-ce-cli
安装后验证清单
# ✅ 1. Docker 版本
docker version
# Client 和 Server 都有输出,没有错误
# ✅ 2. Docker 信息
docker info
# 查看 Storage Driver、Cgroup Driver、Kernel Version
# ✅ 3. 运行容器
docker run --rm hello-world
# ✅ 4. 镜像加速
docker pull nginx:alpine # 速度应该较快
# ✅ 5. 非 root 使用
docker ps # 无需 sudo
# ✅ 6. 开机自启
sudo reboot # 重启后
sudo systemctl status docker # 应该是 active (running)
小结
Docker 安装的核心步骤是:添加官方(或镜像)源 → 安装 docker-ce → 配置 daemon.json(镜像加速+日志限制)→ 启动服务。
企业环境两个必须做的事:一是配置镜像加速(否则拉取镜像很慢),二是限制日志大小(否则容器日志会撑满磁盘)。离线环境用二进制包安装最简单,不依赖包管理器,各发行版通用。
下一篇将讲解镜像管理:如何 pull、tag、push 镜像,以及理解镜像的分层结构。
