1 Docker 简介

1.1 为什么需要 Docker

开发环境、测试环境、生产环境不一致,导致应用部署时频繁出现环境差异问题。传统方式需要为每个环境准备完整的部署文件,配置复杂且无法跨平台复用。

Docker 基于 Go 语言实现,核心目标是 Build, Ship and Run Any App, Anywhere。它将应用及其运行环境打包成镜像,镜像在 Docker 容器中运行,容器在任何操作系统上行为一致。

1.2 容器与虚拟机比较

对比项传统虚拟机Docker 容器
虚拟化层级虚拟出硬件,运行完整 OS,再运行应用应用进程直接运行于宿主内核
内核每个虚拟机有独立内核共享宿主机内核,无自己的内核
硬件虚拟需要 Hypervisor 虚拟化硬件无硬件虚拟,直接复用宿主机资源
隔离性完整 OS 级隔离进程级隔离,容器间互相隔离,各有独立文件系统
启动速度分钟级秒级
体积GB 级MB 级
资源占用高,冗余步骤多低,直接复用宿主机 OS

1.3 Docker 的优势

优势说明
更快速的应用交付和部署只需交付镜像文件,加载即运行
更便捷的升级和扩缩容扩容从天级缩短到分钟级甚至秒级
更简单的系统运维开发、测试、生产环境高度一致
更高效的计算资源利用内核级虚拟化,一台物理机可运行大量容器

1.4 Docker 与 Podman 比较

Podman 是 RedHat 推出的无守护进程容器引擎,工具集包括:

工具功能
PodmanPod 和容器镜像管理
Buildah容器镜像构建
Skopeo容器镜像检查与管理
Runc容器运行时
Crun可选运行时

Docker 与 Podman 核心区别:

对比项DockerPodman
守护进程依赖 Docker Daemon 常驻进程无守护进程,直接与内核交互
安全性守护进程拥有 Root 权限支持 Rootless 容器,安全性更高
镜像构建内置构建能力需要 Buildah 辅助构建
架构独立多合一模块化设计

2 Docker 安装与配置

2.1 Docker 的基本组成

核心概念说明
镜像 (Image)只读模板,用于创建容器
容器 (Container)镜像的运行实例,可启动、停止、删除,容器间互相隔离
仓库 (Repository)存放镜像的地方,Docker Hub 是最大的公开仓库,国内有阿里云、网易云等

Docker 采用 Client-Server 架构,Docker Daemon 运行在主机上,客户端通过 Socket 连接访问。

2.2 CentOS 7 安装 Docker

前提条件:CentOS 7 及以上版本。

安装步骤:

# 安装 gcc 环境
yum -y install gcc
yum -y install gcc-c++

# 安装依赖软件包
yum install -y yum-utils

# 设置阿里云镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 更新 yum 软件包索引
yum makecache fast

# 安装 Docker CE
yum -y install docker-ce docker-ce-cli containerd.io

# 启动 Docker
systemctl start docker

# 验证版本
docker version

卸载步骤:

# 停止 Docker 服务
systemctl stop docker

# 卸载 Docker 软件包
yum remove docker-ce docker-ce-cli containerd.io

# 删除 Docker 数据目录
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

2.3 配置阿里云镜像加速器

登录阿里云控制台,进入「容器镜像服务」,获取加速器地址。执行以下配置脚本:

# 创建 Docker 配置目录
mkdir -p /etc/docker

# 写入镜像加速器配置
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}
EOF

# 重新加载配置并重启 Docker
systemctl daemon-reload
systemctl restart docker

https://xxxxx.mirror.aliyuncs.com 替换为你在阿里云控制台获取的专属加速器地址。

2.4 验证安装

# 运行测试镜像
docker run hello-world

执行流程:本地查找镜像 → 本地不存在则从 Docker Hub 拉取 → 下载到本地后创建容器并运行。

2.5 Docker 为什么比虚拟机快

原因虚拟机Docker
抽象层数需要 Hypervisor 实现硬件虚拟化无 Hypervisor,直接使用物理机硬件资源
OS 内核加载每次新建需加载完整 OS 内核,启动分钟级直接利用宿主机内核,新建容器秒级完成

下一篇将介绍 Docker 的常用命令操作。

更多推荐