跳转到内容

Docker安装和配置

课程介绍

Docker的安装和配置是使用Docker的第一步,正确的安装和配置可以确保Docker的正常运行。本课程将详细讲解Docker的安装方法、配置选项、启动和验证等内容,帮助你掌握Docker的安装和配置技巧。

1. Docker安装

1.1 安装前准备

安装Docker前的准备工作。

重要警告:不要直接使用默认源安装!

在 Rocky Linux、openEuler 或 CentOS 等系统中,如果直接使用 dnf install dockeryum install docker,安装的 Docker 版本可能是 18.09 这种老版本。

老版本问题

  • 存在多个已知 Bug
  • 不支持 Docker 新特性
  • 与现代容器应用不兼容

正确做法:安装最新的 Docker CE(社区版),版本号通常为 27.x 或更高。

系统要求

系统版本
Rocky Linux8 或 9(本课程推荐)
Ubuntu18.04 LTS或更高版本
Debian10或更高版本
CentOS7或更高版本
RHEL7或更高版本
Fedora30或更高版本
Windows10 Pro/Enterprise/Education
macOSmacOS 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 --version

1.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 --version

CentOS 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 --version

1.5 Windows安装

在Windows系统上安装Docker Desktop。

安装步骤

  1. 下载Docker Desktop:从Docker官网下载Docker Desktop安装包
  2. 运行安装程序:双击安装包,按照提示进行安装
  3. 启动Docker Desktop:安装完成后,启动Docker Desktop
  4. 验证安装:打开PowerShell,运行docker --version

国内镜像加速

Windows 版 Docker Desktop 同样需要配置镜像加速。在 Docker Desktop 设置中,选择 Docker Engine,编辑 JSON 配置文件添加 registry-mirrors 配置。

1.6 macOS安装

在macOS系统上安装Docker Desktop。

安装步骤

  1. 下载Docker Desktop:从Docker官网下载Docker Desktop安装包
  2. 运行安装程序:双击安装包,按照提示进行安装
  3. 启动Docker Desktop:安装完成后,启动Docker Desktop
  4. 验证安装:打开终端,运行docker --version

国内镜像加速

macOS 版 Docker Desktop 同样需要配置镜像加速。在 Docker Desktop 设置中,选择 Docker Engine,编辑 JSON 配置文件添加 registry-mirrors 配置。

2. Docker配置

2.1 Docker配置文件

Docker的配置文件。

配置文件路径

系统配置文件路径
Linux/etc/docker/daemon.json
WindowsC:\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同步及时、速度快
⭐⭐⭐DaoCloudhttps://docker.m.daocloud.io老牌服务,稳定可靠
⭐⭐1Panel 官方https://docker.1panel.live面板用户友好
⭐⭐Ketcheshttps://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 images

2.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-restoreDocker 重启时容器不中断

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 docker

2.3 配置存储驱动

配置Docker的存储驱动。

存储驱动类型

驱动说明
overlay2默认存储驱动,性能最佳
aufs旧版存储驱动
devicemapper设备映射驱动
btrfsBtrfs文件系统驱动
zfsZFS文件系统驱动

配置示例

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 docker

3.2 验证Docker服务

验证Docker服务是否正常运行。

命令

bash
# 验证Docker版本
docker --version

# 验证Docker详细信息
docker info

# 运行Hello World容器
docker run hello-world

4. Docker用户管理

4.1 添加用户到docker组

将用户添加到docker组,避免使用sudo。

命令

bash
# 添加用户到docker组
sudo usermod -aG docker $USER

# 重新登录使权限生效
exit

# 验证Docker命令
docker ps

4.2 测试Docker权限

测试Docker权限是否正确。

命令

bash
# 运行一个简单的容器
docker run -it --rm nginx:alpine sh

# 在容器中执行命令
ls -la

# 退出容器
exit

5. 实战案例

案例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:alpine

6. 常见问题

问题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 上安装 Docker
  • sudo apt-get install docker-ce:在Ubuntu上安装Docker
  • sudo 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 欢迎页面

评论区

专业的Linux技术学习平台,从入门到精通的完整学习路径