Docker 入门到实战

完整指南 · 2026
一次构建,到处运行 · 从零到部署

第一章 · Docker 简介

1. Docker 历史

Docker 通过 Linux Container 技术将应用变为标准化、可移植、自管理的组件,实现 “一次构建,到处运行”。特点:快速发布、部署简单、管理方便,应用密度更高。

Docker 引擎 有两个版本:EE 企业版 CE 社区版。每季度发布稳定版,CE 支持 4 个月,EE 支持 12 个月。

2. 容器 vs 虚拟机

容器
  • 应用层抽象,共享操作系统内核
  • 轻量 (数十 MB),启动快
  • 隔离进程,资源开销小
虚拟机 (VM)
  • 硬件抽象,包含完整 OS
  • 体积大 (数十 GB),启动慢
  • Hypervisor 管理,资源占用高

3. Docker 安装

Linux 安装 (内核 ≥ 3.10)

# 下载 repo 文件 (注意 -O 大写字母O)
wget -O /etc/yum.repos.d/docker.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 修改系统版本
sed -i 's/$releasever/7/g' /etc/yum.repos.d/docker.repo

# 安装 docker-ce
yum -y install docker-ce

# 查看可用版本并安装指定版本
dnf list docker-ce --showduplicates | sort -r
dnf install docker-ce-<VERSION> docker-ce-cli-<VERSION> containerd.io

离线安装:从 https://download.docker.com/linux/static/stable/x86_64/ 下载 tgz,解压并复制到 /usr/bin/,后台运行 nohup dockerd &

4. 配置镜像加速

国内访问 Docker Hub 较慢,建议配置加速器。创建 /etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://1ms.run",
    "https://dockerproxy.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.nju.edu.cn",
    "https://iju9kaj2.mirror.aliyuncs.com",
    "http://hub-mirror.c.163.com",
    "https://cr.console.aliyun.com",
    "https://hub.docker.com",
    "http://mirrors.ustc.edu.cn"
  ]
}

然后执行 systemctl daemon-reload && systemctl restart docker

5. Docker 核心概念

镜像 (Image) 只读模板,分层存储,定义运行环境。
容器 (Container) 轻量运行实例,基于镜像创建,共享内核。
仓库 (Registry) 存储分发镜像,如 Docker Hub、Harbor。

第二章 · 镜像与容器常用配置

镜像搜索 & 拉取

Docker Hub 官方仓库:https://hub.docker.com。拉取示例:

# 拉取官方最新 ubuntu
docker pull ubuntu

# 拉取指定版本
docker pull ubuntu:18.04

# 私有仓库
docker pull myusername/nginx:latest

# 阿里云镜像
docker pull registry.cn-hangzhou.aliyuncs.com/library/nginx:latest

镜像启动 & 容器命令

# 运行 nginx
docker run nginx

# 常用选项:--name, -d 后台, -it 交互, -p 端口映射
docker run -d --name mynginx -p 8080:80 nginx:1.24.0

# 查看运行中的容器
docker ps
docker ps -a        # 所有容器
docker ps -aq       # 仅 ID

# 进入容器 (新终端)
docker exec -it mynginx bash
# 退出: exit

# 删除容器
docker rm -f mynginx
docker rm -f $(docker ps -aq)   # 删除所有

docker container inspect 查看容器细节。


第三章 · Docker 网络与通讯原理

默认网络

Docker 启动的时候会自动创建 bridgehostnone 三种网络。

容器对外服务 (端口映射)

# -P 随机映射 49000~49900 端口
docker run -d -P nginx

# -p 指定映射
docker run -d -p 2025:80 nginx

# 查看端口映射
docker ps -l

创建自定义网络

# 创建网络
docker network create --driver bridge --subnet 172.30.0.0/16 --gateway 172.30.0.1 appnet

# 使用自定义网络,容器间可通过容器名通信
docker run -d --network appnet --name app1 nginx

第四章 · Docker 数据卷

数据卷概述

数据卷将容器内目录挂载到宿主机,实现数据持久化,独立于容器生命周期。支持宿主机与容器间实时同步,多容器共享。

数据覆盖注意: 若宿主机目录为空,容器内非空目录数据会复制到宿主机;若宿主机目录非空,容器内目录内容会被隐藏,显示宿主机数据。

挂载命令

# 绑定挂载 (-v)
docker run -d -p 2025:80 -v /web/html:/usr/share/nginx/html --name nginx03 nginx

# 卷映射 (volume mount)
docker run -d -p 2025:80 -v /web/html:/usr/share/nginx/html -v ngconf:/etc/nginx --name nginx03 nginx

第五章 · Docker 部署电子商城 (PrestaShop)

1. 安装 Docker

# 更新系统,添加 docker 源
yum -y update
yum config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/$releasever/7/g' /etc/yum.repos.d/docker-ce.repo
yum makecache
yum -y install docker-ce-26.1.4

2. 配置镜像加速 (同上)

参考第二章加速配置,重启 docker。

3. 部署 PrestaShop + MySQL

# 创建自定义网络
docker network create prestashop-network

# 启动 MySQL 5.7
docker run -d \
  --name prestashop-mysql \
  --network prestashop-network \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -e MYSQL_DATABASE=prestashop \
  -e MYSQL_USER=psuser \
  -e MYSQL_PASSWORD=123456 \
  --default-authentication-plugin=mysql_native_password \
  mysql:5.7

# 启动 PrestaShop (8.2.1)
docker run -d \
  --name prestashop \
  --network prestashop-network \
  -p 8080:80 \
  -e DB_SERVER=prestashop-mysql \
  -e DB_NAME=prestashop \
  -e DB_USER=psuser \
  -e DB_PASSWORD=123456 \
  docker.1ms.run/prestashop/prestashop:latest

浏览器访问 http://服务器IP:8080 进行初始化配置,按引导完成安装。

部署完成 · 商城 + 数据库已运行,数据持久化通过数据卷管理。