主题
Docker安装和配置
课程介绍
Docker的安装和配置是使用Docker的第一步,正确的安装和配置可以确保Docker的正常运行。本课程将详细讲解Docker的安装方法、配置选项、启动和验证等内容,帮助你掌握Docker的安装和配置技巧。
1. Docker安装
1.1 安装前准备
安装Docker前的准备工作。
重要警告:不要直接使用默认源安装!
在 Rocky Linux、openEuler 或 CentOS 等系统中,如果直接使用 dnf install docker 或 yum install docker,安装的 Docker 版本可能是 18.09 这种老版本。
老版本问题:
- 存在多个已知 Bug
- 不支持 Docker 新特性
- 与现代容器应用不兼容
正确做法:安装最新的 Docker CE(社区版),版本号通常为 27.x 或更高。
系统要求:
| 系统 | 版本 |
|---|---|
| Rocky Linux | 8 或 9(本课程推荐) |
| Ubuntu | 18.04 LTS或更高版本 |
| Debian | 10或更高版本 |
| CentOS | 7或更高版本 |
| RHEL | 7或更高版本 |
| Fedora | 30或更高版本 |
| Windows | 10 Pro/Enterprise/Education |
| macOS | macOS 10.14或更高版本 |
硬件要求:
| 硬件 | 要求 |
|---|---|
| CPU | 至少2核 |
| 内存 | 至少4GB |
| 磁盘 | 至少20GB |
| 网络 | 互联网连接 |
1.2 Rocky Linux 9 安装(推荐)
在 Rocky Linux 9 系统上安装 Docker。这是本课程推荐的环境。
为什么选择 Rocky Linux 9?
Rocky Linux 是 CentOS 的下游发行版,由 CentOS 创始人 Gregory Kurtzer 发起,完全兼容 RHEL(Red Hat Enterprise Linux)。Rocky Linux 9 提供长期支持,是企业级生产环境的理想选择。
安装步骤:
bash
# 1. 卸载旧版本Docker(如果存在,非常重要!)
sudo dnf remove docker docker-client docker-client-latest docker-common \
docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 2. 安装 dnf-utils 工具包
sudo dnf install -y dnf-utils
# 3. 下载 Docker CE 仓库文件(使用阿里云镜像加速)
sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4. 版本适配(Rocky Linux 9 兼容 CentOS 9)
sudo sed -i 's/\$releasever/9/g' /etc/yum.repos.d/docker-ce.repo
# 5. 清理缓存并刷新(彻底清理,避免残留缓存导致问题)
sudo dnf clean all
sudo dnf makecache
# 6. 安装 Docker Engine、containerd 和 Docker Compose
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 7. 启动 Docker 并设置开机自启
sudo systemctl enable --now docker
# 8. 验证安装
docker --version
docker compose version验证 Docker 安装:
bash
# 查看 Docker 版本(应为 27.x 或更高)
docker version
# 运行 Hello World 容器测试
sudo docker run hello-world国内网络环境提示
由于国内网络环境,直接从 Docker Hub 拉取镜像可能非常缓慢甚至失败。安装完成后,请务必参考 2.2 配置镜像加速 章节配置国内镜像加速器。
1.3 Ubuntu/Debian安装
在Ubuntu或Debian系统上安装Docker。
安装步骤:
bash
# 1. 更新系统
sudo apt-get update
# 2. 安装依赖包
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# 3. 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 4. 添加Docker软件源
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 5. 更新系统
sudo apt-get update
# 6. 安装Docker
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# 7. 启动并设置开机自启
sudo systemctl enable --now docker
# 8. 验证安装
docker --version1.4 CentOS/RHEL 安装
在 CentOS 7/8 或 RHEL 系统上安装 Docker。
CentOS 7 安装步骤:
bash
# 1. 卸载旧版本Docker
sudo yum remove docker docker-common docker-selinux docker-engine
# 2. 安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 3. 添加Docker软件源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4. 安装Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 5. 启动并设置开机自启
sudo systemctl enable --now docker
# 6. 验证安装
docker --versionCentOS Stream 8/9 安装步骤:
bash
# 使用 dnf 包管理器(与 Rocky Linux 9 类似)
sudo dnf remove docker docker-client docker-client-latest docker-common \
docker-latest docker-latest-logrotate docker-logrotate docker-engine
sudo dnf install -y dnf-utils
sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's/\$releasever/9/g' /etc/yum.repos.d/docker-ce.repo
sudo dnf clean all
sudo dnf makecache
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
docker --version1.5 Windows安装
在Windows系统上安装Docker Desktop。
安装步骤:
- 下载Docker Desktop:从Docker官网下载Docker Desktop安装包
- 运行安装程序:双击安装包,按照提示进行安装
- 启动Docker Desktop:安装完成后,启动Docker Desktop
- 验证安装:打开PowerShell,运行
docker --version
国内镜像加速
Windows 版 Docker Desktop 同样需要配置镜像加速。在 Docker Desktop 设置中,选择 Docker Engine,编辑 JSON 配置文件添加 registry-mirrors 配置。
1.6 macOS安装
在macOS系统上安装Docker Desktop。
安装步骤:
- 下载Docker Desktop:从Docker官网下载Docker Desktop安装包
- 运行安装程序:双击安装包,按照提示进行安装
- 启动Docker Desktop:安装完成后,启动Docker Desktop
- 验证安装:打开终端,运行
docker --version
国内镜像加速
macOS 版 Docker Desktop 同样需要配置镜像加速。在 Docker Desktop 设置中,选择 Docker Engine,编辑 JSON 配置文件添加 registry-mirrors 配置。
2. Docker配置
2.1 Docker配置文件
Docker的配置文件。
配置文件路径:
| 系统 | 配置文件路径 |
|---|---|
| Linux | /etc/docker/daemon.json |
| Windows | C:\ProgramData\Docker\config\daemon.json |
| macOS | ~/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/etc/docker/daemon.json |
2.2 配置镜像加速
配置 Docker 镜像加速器,解决国内镜像拉取缓慢或失败的问题。
重要提示
由于 Docker Hub 访问限制和网络原因,国内用户必须配置镜像加速器,否则镜像拉取可能非常缓慢甚至失败。以下镜像源为 2025 年测试可用的国内加速器。
2.2.1 国内镜像加速器列表(2025年更新)
| 优先级 | 名称 | 加速地址 | 说明 |
|---|---|---|---|
| ⭐⭐⭐ | 毫秒镜像 | https://docker.1ms.run | 推荐!CDN加速,速度快 |
| ⭐⭐⭐ | 轩辕镜像(免费) | https://docker.xuanyuan.me | 同步及时、速度快 |
| ⭐⭐⭐ | DaoCloud | https://docker.m.daocloud.io | 老牌服务,稳定可靠 |
| ⭐⭐ | 1Panel 官方 | https://docker.1panel.live | 面板用户友好 |
| ⭐⭐ | Ketches | https://docker.ketches.cn | 备选方案 |
| ⭐⭐ | 南京大学 | https://docker.nju.edu.cn | 高校镜像源 |
多源配置建议
建议配置多个镜像源,Docker 会自动选择最快的源。同时避免单点故障导致无法拉取镜像。
2.2.2 配置方法(Rocky Linux 9 / CentOS)
方法一:手动配置(推荐)
bash
# 1. 创建 Docker 配置目录
sudo mkdir -p /etc/docker
# 2. 写入镜像加速配置
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me",
"https://docker.m.daocloud.io",
"https://docker.1panel.live"
]
}
EOF
# 3. 重新加载配置
sudo systemctl daemon-reload
# 4. 重启 Docker 服务
sudo systemctl restart docker
# 5. 验证配置是否生效
docker info | grep -A 5 "Registry Mirrors"方法二:一键配置脚本
bash
# 一键配置镜像加速(适用于 Rocky Linux 9 / CentOS)
sudo mkdir -p /etc/docker && \
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me",
"https://docker.m.daocloud.io",
"https://docker.1panel.live"
]
}
EOF
sudo systemctl daemon-reload && \
sudo systemctl restart docker && \
echo "镜像加速配置完成!" && \
docker info | grep -A 5 "Registry Mirrors"2.2.3 验证镜像加速是否生效
bash
# 查看 Docker 信息,确认镜像源配置
docker info | grep -A 5 "Registry Mirrors"
# 输出示例:
# Registry Mirrors:
# https://docker.1ms.run/
# https://docker.xuanyuan.me/
# https://docker.m.daocloud.io/
# https://docker.1panel.live/
# 测试拉取镜像速度
time docker pull nginx:alpine
# 查看镜像来源
docker images2.2.4 完整配置示例
推荐的生产环境配置,包含镜像加速、日志限制、存储驱动等:
json
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me",
"https://docker.m.daocloud.io",
"https://docker.1panel.live"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"storage-driver": "overlay2",
"live-restore": true
}配置说明:
| 配置项 | 说明 |
|---|---|
registry-mirrors | 镜像加速器列表 |
log-driver | 日志驱动,使用 json-file |
log-opts.max-size | 单个日志文件最大 10MB |
log-opts.max-file | 保留最近 3 个日志文件 |
storage-driver | 存储驱动,overlay2 性能最佳 |
live-restore | Docker 重启时容器不中断 |
2.2.5 镜像加速器故障排查
如果配置后仍无法拉取镜像,可以尝试以下方法:
bash
# 1. 检查 Docker 服务状态
sudo systemctl status docker
# 2. 检查配置文件语法
cat /etc/docker/daemon.json
# 3. 查看 Docker 日志
sudo journalctl -u docker --no-pager -n 50
# 4. 测试单个镜像源
curl -I https://docker.1ms.run/v2/
# 5. 重新加载并重启
sudo systemctl daemon-reload
sudo systemctl restart docker2.3 配置存储驱动
配置Docker的存储驱动。
存储驱动类型:
| 驱动 | 说明 |
|---|---|
| overlay2 | 默认存储驱动,性能最佳 |
| aufs | 旧版存储驱动 |
| devicemapper | 设备映射驱动 |
| btrfs | Btrfs文件系统驱动 |
| zfs | ZFS文件系统驱动 |
配置示例:
json
{
"storage-driver": "overlay2"
}2.4 配置网络
配置Docker的网络。
配置示例:
json
{
"bip": "172.17.0.1/16",
"default-address-pools": [
{
"base": "172.18.0.0/16",
"size": 24
}
]
}2.5 配置日志
配置Docker的日志。
配置示例:
json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}3. Docker服务管理
3.1 启动Docker服务
启动Docker服务。
命令:
bash
# 启动Docker服务
sudo systemctl start docker
# 查看Docker服务状态
sudo systemctl status docker
# 设置Docker服务开机自启
sudo systemctl enable docker
# 启动并设置开机自启(组合命令,推荐)
sudo systemctl enable --now docker
# 停止Docker服务
sudo systemctl stop docker
# 重启Docker服务
sudo systemctl restart docker3.2 验证Docker服务
验证Docker服务是否正常运行。
命令:
bash
# 验证Docker版本
docker --version
# 验证Docker详细信息
docker info
# 运行Hello World容器
docker run hello-world4. Docker用户管理
4.1 添加用户到docker组
将用户添加到docker组,避免使用sudo。
命令:
bash
# 添加用户到docker组
sudo usermod -aG docker $USER
# 重新登录使权限生效
exit
# 验证Docker命令
docker ps4.2 测试Docker权限
测试Docker权限是否正确。
命令:
bash
# 运行一个简单的容器
docker run -it --rm nginx:alpine sh
# 在容器中执行命令
ls -la
# 退出容器
exit5. 实战案例
案例1:在 Rocky Linux 9 上安装 Docker(推荐)
场景:在 Rocky Linux 9 上安装 Docker 并配置镜像加速。
步骤:
bash
# 1. 卸载旧版本Docker(如果存在)
sudo dnf remove docker docker-client docker-client-latest docker-common \
docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 2. 安装 dnf-utils 工具包
sudo dnf install -y dnf-utils
# 3. 下载 Docker CE 仓库文件(使用阿里云镜像)
sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4. 版本适配
sudo sed -i 's/\$releasever/9/g' /etc/yum.repos.d/docker-ce.repo
# 5. 清理缓存并安装
sudo dnf clean all
sudo dnf makecache
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 6. 配置国内镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me",
"https://docker.m.daocloud.io",
"https://docker.1panel.live"
]
}
EOF
# 7. 启动 Docker 并设置开机自启
sudo systemctl enable --now docker
# 8. 验证安装
docker --version
docker compose version
# 9. 验证镜像加速配置
docker info | grep -A 5 "Registry Mirrors"
# 10. 测试拉取镜像
docker pull nginx:alpine案例2:在Ubuntu上安装Docker
场景:在Ubuntu 20.04/22.04上安装Docker并配置镜像加速。
步骤:
bash
# 1. 更新系统
sudo apt-get update
# 2. 安装依赖包
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# 3. 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 4. 添加Docker软件源
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 5. 更新系统
sudo apt-get update
# 6. 安装Docker
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# 7. 配置国内镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me",
"https://docker.m.daocloud.io",
"https://docker.1panel.live"
]
}
EOF
# 8. 启动Docker
sudo systemctl daemon-reload
sudo systemctl enable --now docker
# 9. 验证安装
docker --version
# 10. 测试拉取镜像
docker pull nginx:alpine案例3:配置Docker镜像加速
场景:已安装 Docker,需要配置国内镜像加速器。
步骤:
bash
# 1. 备份原有配置(如果存在)
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak 2>/dev/null
# 2. 写入新的镜像加速配置
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me",
"https://docker.m.daocloud.io",
"https://docker.1panel.live"
]
}
EOF
# 3. 重新加载配置并重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
# 4. 验证配置
docker info | grep -A 5 "Registry Mirrors"
# 5. 测试镜像拉取速度
time docker pull nginx:alpine6. 常见问题
问题1:Docker安装失败
问题:Docker安装失败。
解决方法:
bash
# 检查系统版本
cat /etc/os-release
# 检查网络连接
ping mirrors.aliyun.com
# 检查Docker软件源
sudo cat /etc/yum.repos.d/docker-ce.repo
# 清理缓存重新安装
sudo dnf clean all
sudo dnf makecache
sudo dnf install -y docker-ce docker-ce-cli containerd.io问题2:Docker服务启动失败
问题:Docker服务启动失败。
解决方法:
bash
# 查看Docker服务状态
sudo systemctl status docker
# 查看Docker日志
sudo journalctl -u docker --no-pager -n 50
# 检查Docker配置文件语法
cat /etc/docker/daemon.json
# 检查JSON格式是否正确(如果安装了jq)
jq . /etc/docker/daemon.json
# 重新启动Docker
sudo systemctl restart docker问题3:Docker命令需要sudo权限
问题:Docker命令需要sudo权限。
解决方法:
bash
# 添加用户到docker组
sudo usermod -aG docker $USER
# 重新登录使权限生效
exit
# 验证Docker命令
docker ps问题4:Docker镜像拉取慢或失败
问题:Docker镜像拉取缓慢或失败(国内网络环境常见问题)。
解决方法:
bash
# 方法一:配置国内镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me",
"https://docker.m.daocloud.io",
"https://docker.1panel.live"
]
}
EOF
# 重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证配置
docker info | grep -A 5 "Registry Mirrors"
# 方法二:如果镜像加速器全部失效,可尝试手动指定镜像源拉取
# 使用毫秒镜像源
docker pull docker.1ms.run/library/nginx:alpine
# 使用 DaoCloud 镜像源
docker pull docker.m.daocloud.io/library/nginx:alpine
# 方法三:检查网络和DNS
ping docker.io
nslookup docker.io问题5:镜像加速器配置后不生效
问题:配置了镜像加速器但拉取镜像仍然缓慢。
解决方法:
bash
# 1. 检查配置文件语法是否正确
cat /etc/docker/daemon.json
# 2. 使用 jq 验证 JSON 格式(如果已安装 jq)
jq . /etc/docker/daemon.json
# 3. 确保 Docker 服务已重启
sudo systemctl daemon-reload
sudo systemctl restart docker
# 4. 查看当前生效的镜像源
docker info | grep -A 10 "Registry Mirrors"
# 5. 测试镜像源连通性
curl -I https://docker.1ms.run/v2/
curl -I https://docker.xuanyuan.me/v2/
# 6. 如果某个镜像源不可用,更换其他镜像源
# 编辑配置文件,移除不可用的镜像源
sudo vim /etc/docker/daemon.json问题6:安装了旧版本 Docker
问题:使用 dnf install docker 安装了旧版本 Docker(18.x)。
解决方法:
bash
# 1. 卸载旧版本
sudo dnf remove docker docker-client docker-client-latest docker-common \
docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 2. 按照 1.2 章节的步骤重新安装 Docker CE
# 参考上面的 Rocky Linux 9 安装步骤课程总结
这节课我们学习了Docker安装和配置。
核心内容:
- Docker安装(Rocky Linux 9 安装、Ubuntu/Debian 安装、CentOS/RHEL 安装、Windows 安装、macOS 安装)
- Docker配置(配置文件、国内镜像加速、存储驱动、网络、日志)
- Docker服务管理(启动Docker服务、验证Docker服务)
- Docker用户管理(添加用户到docker组、测试Docker权限)
- 实战案例(在 Rocky Linux 9 上安装 Docker、在 Ubuntu 上安装 Docker、配置镜像加速)
- 常见问题(镜像拉取失败、镜像加速器配置问题、旧版本问题)
重要命令:
sudo dnf install docker-ce docker-ce-cli containerd.io:在 Rocky Linux 9 上安装 Dockersudo apt-get install docker-ce:在Ubuntu上安装Dockersudo systemctl enable --now docker:启动并设置开机自启docker --version:验证Docker版本docker compose version:验证 Docker Compose 版本docker info | grep -A 5 "Registry Mirrors":验证镜像加速配置sudo usermod -aG docker $USER:添加用户到docker组
国内用户必读
在国内网络环境下,配置镜像加速器是使用 Docker 的必要步骤。请务必在安装 Docker 后立即配置镜像加速,否则后续课程中的镜像拉取操作可能会失败。
Docker的安装和配置是使用Docker的基础,掌握这些知识后,我们将在后续课程中学习Docker镜像和容器管理、Dockerfile编写等内容。
课后练习
练习1(基础)
在 Rocky Linux 9 系统上安装 Docker,并配置国内镜像加速器。
练习2(进阶)
配置 Docker 镜像加速,并测试拉取 nginx:alpine 镜像的速度。
练习3(拓展)
运行一个 Nginx 容器,通过浏览器访问 Nginx 欢迎页面。
bash
# 提示:使用以下命令运行 Nginx 容器
docker run -d -p 80:80 --name my-nginx nginx:alpine
# 访问 http://<服务器IP> 查看 Nginx 欢迎页面