> 技术文档 > Docker 安装与使用教程

Docker 安装与使用教程

本教程旨在提供一个从零开始,在 CentOS 7.9 系统上安装、配置并成功运行 Docker 的详尽指南。它整合了系统准备、Docker 安装、镜像加速配置、基本使用以及常见问题排查。

快捷版

适用系统:CentOS Linux release 7.9.2009 (Core)
镜像源:Docker 官方 + 第三方公共镜像加速器


1. 卸载旧版本 Docker(可选)

# 停止 Docker 服务sudo systemctl stop docker# 卸载 Docker 相关包sudo yum remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras# (可选)清理 Docker 数据目录(会删除所有镜像、容器、卷!)# sudo rm -rf /var/lib/docker# sudo rm -rf /var/lib/containerd

2. 配置 Docker YUM 仓库(使用阿里云源)

# 安装 yum-utils 工具sudo yum install -y yum-utils# 添加 Docker 仓库(阿里云源)sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 生成缓存sudo yum makecache fast

3. 安装 Docker 引擎及插件

sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4. 配置镜像加速器(公共镜像源推荐)

使用多个公共镜像源,提高拉取成功率,适配不同地区网络情况。

# 创建 Docker 配置目录(如不存在)sudo mkdir -p /etc/docker# 写入镜像加速器配置sudo tee /etc/docker/daemon.json <<-\'EOF\'{ \"registry-mirrors\": [ \"https://docker-0.unsee.tech\", \"https://docker-cf.registry.cyou\", \"https://docker.1panel.live\", \"https://docker.m.daocloud.io\" ]}EOF# 重载配置并重启 Dockersudo systemctl daemon-reloadsudo systemctl restart docker

5. 启动并验证 Docker 是否正常

# 启动 Dockersudo systemctl start docker# 设置开机自动启动sudo systemctl enable docker# 查看 Docker 版本信息docker version# 查看加速器是否生效docker info | grep -i mirrors# 拉取测试镜像并运行docker run hello-world

详细版

适用系统: CentOS Linux release 7.9.2009 (Core) 或兼容版本

教程内容:

  1. 系统准备与更新(可选,推荐使用国内镜像源)
  2. 安装必要的依赖
  3. 配置 Docker 的 YUM 仓库(推荐阿里云源)
  4. 安装 Docker 引擎(包含 Compose/Buildx 插件)
  5. 启动并设置 Docker 开机自启
  6. 初步验证 Docker 安装
  7. 配置 Docker 镜像加速器(关键步骤,提升下载速度)
  8. 最终验证与镜像加速器生效确认
  9. Docker 基本使用方法
  10. 常用 Docker 命令参考
  11. 常见问题排查指南
  12. 退出容器与终端

1. 系统准备与更新(可选,推荐使用国内镜像源)

为了提高软件包下载速度,尤其是在中国大陆地区,建议将系统 YUM 源更换为国内镜像(如阿里云)。

首先如果系统中已经存在旧的Docker,则先卸载:

yum remove docker \\ docker-client \\ docker-client-latest \\ docker-common \\ docker-latest \\ docker-latest-logrotate \\ docker-logrotate \\ docker-engine \\ docker-selinux 
# 备份当前的 YUM 源配置 (安全起见)sudo mv /etc/yum.repos.d /etc/yum.repos.d.bak.$(date +%s)sudo mkdir -p /etc/yum.repos.d# 下载阿里云的 CentOS 7 YUM 源配置文件sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 清理旧的缓存并生成新的缓存sudo yum clean allsudo yum makecache fast

2. 安装必要的依赖

安装 yum-utils 软件包,它提供了 yum-config-manager 工具,用于管理 YUM 仓库。同时,安装 device-mapper-persistent-datalvm2 是 Docker 存储驱动推荐的依赖。

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3. 配置 Docker 的 YUM 仓库(推荐阿里云源)

Docker 官方也提供了仓库,但使用国内镜像源通常可以获得更快的下载速度。

# 添加 Docker 的阿里云 YUM 仓库sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 更新 YUM 缓存以包含 Docker 仓库信息sudo yum makecache fast

  • 备选方案:使用 Docker 官方仓库
    如果你不在意下载速度或者更倾向于使用官方源,可以使用以下命令代替上面的 yum-config-manager 命令:
# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# sudo yum makecache fast

4. 安装 Docker 引擎(包含 Compose/Buildx 插件)

执行以下命令安装最新稳定版的 Docker Engine、CLI、Containerd 以及推荐的 Buildx 和 Compose 插件。

sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • *� 附:可选命令
    • 查看所有可安装的 Docker 版本:
yum list docker-ce --showduplicates | sort -r
    • 安装指定版本的 Docker: (将 替换为实际版本,例如 20.10.9)
# sudo yum install -y docker-ce- docker-ce-cli- containerd.io docker-buildx-plugin docker-compose-plugin

5. 启动并设置 Docker 开机自启

安装完成后,启动 Docker 服务并将其设置为开机自动启动。

# 启动 Docker 服务sudo systemctl start docker# 设置 Docker 服务开机自启sudo systemctl enable docker

6. 初步验证 Docker 安装

检查 Docker 版本信息,并尝试运行经典的 hello-world 镜像来确认 Docker 核心功能正常。

# 检查 Docker 版本docker version# 查看 Docker 系统信息 (包括存储驱动、运行状态等)docker info# 运行 hello-world 镜像docker run hello-world

如果看到类似以下的输出,特别是 Hello from Docker!,则表示 Docker 已成功安装并可以运行容器:

Unable to find image \'hello-world:latest\' locallylatest: Pulling from library/hello-world[...]Status: Downloaded newer image for hello-world:latestHello from Docker!This message shows that your installation appears to be working correctly.[...]

7. 配置 Docker 镜像加速器(关键步骤,提升下载速度)

默认情况下,Docker 从 Docker Hub 拉取镜像,速度可能较慢。配置镜像加速器可以显著提高下载速度。

使用公共镜像加速器

你可以使用一些公开的镜像加速器地址。注意,公共地址的稳定性和速度可能不如专属地址。

# 创建配置目录 (如果不存在)sudo mkdir -p /etc/docker# 使用 tee 命令写入配置文件 (包含多个公共地址)sudo tee /etc/docker/daemon.json <<-\'EOF\'{ \"registry-mirrors\": [ \"https://docker-0.unsee.tech\", \"https://docker-cf.registry.cyou\", \"https://docker.1panel.live\", \"https://docker.m.daocloud.io\" ]}EOF
  • 应用配置更改
    修改配置文件后,需要重载配置并重启 Docker 服务:
# 重载 systemd 管理的配置文件sudo systemctl daemon-reexec # 有时用 daemon-reload 也可以,reexec 更彻底# 重启 Docker 服务以应用新配置sudo systemctl restart docker

8. 最终验证与镜像加速器生效确认

再次检查 Docker 信息,并运行 hello-world

# 再次查看 Docker 信息docker info

在输出的信息中,查找 Registry Mirrors: 部分,确认你配置的加速器地址已经列出。

# 再次运行 hello-world (如果之前已下载,会直接使用本地缓存)# 你可以尝试拉取一个新镜像来测试速度,例如 docker pull ubuntudocker run hello-world

如果配置成功,拉取新镜像的速度应该会比之前快很多。

9. Docker 基本使用方法

  • 运行一个交互式容器 (例如 Ubuntu)
# -i: 交互式操作# -t: 分配一个伪终端# ubuntu: 使用的镜像名称# bash: 进入容器后执行的命令docker run -it ubuntu bash

执行后,你将进入 Ubuntu 容器的 Bash Shell。

  • 列出当前正在运行的容器,如果不报错,说明安装启动成功
docker ps

  • 列出所有容器(包括已停止的)
docker ps -a
  • 停止一个正在运行的容器
    首先使用 docker ps 找到容器的 ID (CONTAINER ID) 或名称 (NAMES)。
# 使用容器 ID 停止docker stop # 或者使用容器名称停止# docker stop 
  • 启动一个已停止的容器
docker start 
  • 重启一个容器
docker restart 
  • 进入一个正在运行的容器 (Attach vs Exec)
    • attach: 连接到容器的主进程(通常是启动时指定的命令)。
docker attach 
    • exec: 在运行的容器内执行一个新的命令(更常用,例如打开一个新的 shell)。
# 打开一个新的 Bash Shelldocker exec -it  bash

10. 常用 Docker 命令参考

  • 镜像管理 (Images)
    • docker images: 列出本地所有镜像。
    • docker pull :: 从仓库拉取镜像 (例如 docker pull nginx:latest)。
    • docker rmi : 删除一个或多个本地镜像。
    • docker image prune: 删除所有未被任何容器使用的悬空镜像 (dangling images)。
    • docker image prune -a: 删除所有未被任何容器使用的镜像(慎用!)。
  • 容器管理 (Containers)
    • docker rm : 删除一个或多个已停止的容器。
    • docker rm $(docker ps -aq): 删除所有已停止的容器(常用)。
    • docker container prune: 删除所有已停止的容器 (与上面命令效果类似)。
    • docker logs : 查看容器的日志输出。
    • docker logs -f : 实时跟踪容器的日志输出。
  • Docker Compose (如果使用 .yml 文件管理多容器应用)
    • docker compose up: 根据 docker-compose.yml 创建并启动容器。
    • docker compose up -d: 在后台创建并启动容器。
    • docker compose down: 停止并删除由 docker-compose.yml 定义的容器、网络。
    • docker compose ps: 列出由 docker-compose.yml 管理的容器。
    • docker compose logs: 查看由 docker-compose.yml 管理的服务日志。
    • docker compose exec : 在指定服务容器内执行命令 (例如 docker compose exec webserver bash)。

11. 常见问题排查指南

如果 Docker 无法启动或运行容器时遇到问题:

  • 查看 Docker 服务状态:
sudo systemctl status docker.service

这会显示服务是否正在运行,以及最近的日志片段,通常包含错误信息。

  • 查看系统日志获取更详细信息:
sudo journalctl -u docker.service -n 100 --no-pager # 查看 Docker 服务的最后 100 条日志sudo journalctl -xe # 查看系统日志中的错误(可能包含 Docker 相关信息)
  • 检查配置文件语法:
    如果你修改了 /etc/docker/daemon.json,确保它是有效的 JSON 格式。可以使用在线 JSON 验证器检查。
  • 检查文件权限:
    确保 Docker 配置文件权限正确。
sudo ls -l /etc/docker/daemon.json# 预期输出类似: -rw-r--r-- 1 root root ... /etc/docker/daemon.json# 如果权限不对,可以尝试修复:# sudo chown root:root /etc/docker/daemon.json# sudo chmod 644 /etc/docker/daemon.json
  • 检查系统资源:
    • 磁盘空间: df -h
    • 内存: free -h
    • 确认是否有足够的资源供 Docker 及其容器运行。
  • 尝试重启 Docker 服务:
    在修复配置或解决问题后,务必重启 Docker。
sudo systemctl restart docker
  • 网络问题:
    • 检查防火墙设置(如 firewalldiptables)是否阻止了 Docker 的网络通信(尤其是端口映射)。
    • 检查 /etc/resolv.conf 中的 DNS 设置是否正确,容器需要 DNS 来解析域名。

12. 退出容器与终端

  • 退出 Docker 容器的交互式 Shell:
    在容器的 Shell 中输入 exit 命令,或者按下 Ctrl + D
  • 退出 SSH 终端:
    如果你是通过 SSH 连接到服务器操作的,输入 exit 命令或按下 Ctrl + D 来断开 SSH 连接。