实用指南:Docker 全阶段学习指南
1. Docker 基础概念
1.1 云服务与虚拟化基础
1.1.1 云服务模型对比
| 服务模型 | 核心提供 | 用户责任 | 优点 | 缺点 | 
|---|---|---|---|---|
| IaaS | 虚拟化资源(虚拟机、存储、网络) | 管 OS、应用部署与资源 | 灵活、可扩展 | 管理复杂,需技术支持 | 
| PaaS | 开发平台(运行环境、工具) | 仅专注应用开发 | 简化开发流程 | 灵活度低,受平台限制 | 
| SaaS | 现成应用(直接使用) | 仅使用应用 | 快速部署,省成本 | 定制化差,依赖服务商 | 
| DaaS | 数据处理、分析与访问服务 | 仅用数据与分析 | 降低数据管理难度 | 存在数据隐私风险 | 
1.1.2 常见云服务提供商
- 阿里云、腾讯云、AWS、Google Cloud、华为云等 
- 提供存储、计算、网络、CDN 等服务 
1.1.3 虚拟化技术
- 全虚拟化:完全模拟硬件环境,兼容多操作系统 
- 半虚拟化:与宿主机协作,性能更优 
- 主流产品:VMware、KVM、Hyper-V、VirtualBox 
1.2 Docker 核心价值
1.2.1 为什么需要 Docker
- 一致性环境:实现跨平台部署,确保应用运行一致性 
- 资源高效:相比传统虚拟机,资源消耗减少50%以上 
- 快速部署:秒级启动,简化应用部署流程 
1.2.2 Docker 与传统虚拟机对比
| 特性 | Docker 容器 | 虚拟机 | 
|---|---|---|
| 启动速度 | 秒级 | 分钟级 | 
| 资源消耗 | 几乎无 | 损耗50%左右 | 
| 性能 | 接近原生 | 较弱 | 
| 单机支持量 | 上千个 | 几十个 | 
| 隔离性 | 资源隔离/限制 | 完全隔离 | 
1.3 Docker 架构组成
核心组件:
- Docker Daemon:后台守护进程 
- Docker Client:用户交互界面 
- Images:只读模板,包含应用及其依赖 
- Containers:镜像的运行实例 
- Registry:镜像存储和分发服务(如 Docker Hub) 
核心技术:
- Namespace:实现资源隔离(6大命名空间) 
- Cgroup:实现资源限制 
- Copy-on-Write:高效文件操作 
核心概念
- 镜像(Image):包含应用及依赖的只读模板 
- 容器(Container):镜像的运行实例,具有独立文件系统、网络、进程空间 
- 仓库(Repository):存放 Docker 镜像的地方(如 Docker Hub) 
2. Docker 实践操作
2.1 安装配置
2.1.1 基本安装步骤
# 关闭防火墙和增强功能
systemctl stop firewalld.service
setenforce 0
# 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装 Docker-CE
yum install -y docker-ce docker-ce-cli containerd.io
# 启动服务
systemctl start docker
systemctl enable docker2.1.2 镜像加速配置
# 华为云加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [ "https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com" ]
}
EOF2.2 镜像管理
2.2.1 基本命令
#查看 Docker 版本
docker --version
#查看 Docker 系统信息
docker info2.2.2 核心命令
# 拉取镜像
docker pull nginx
# 查看镜像
docker images
# 镜像标签
docker tag nginx:latest nginx:web
# 删除镜像
docker rmi nginx:web                    #通过 仓库:标签
docker rmi ID                           #通过 ID
# 导出
docker save nginx:latest > nginx.tar
# 导入
docker load < nginx.tar2.3 容器管理
2.3.1 生命周期管理
# 创建容器
docker create -it nginx:latest /bin/bash
# 启动/停止
docker start 
docker stop 
# 创建一个自定义名称的容器
docker run -itd --name 自定义名称 镜像名 [命令]
# 修改容器名称
docker rename 原容器名/原容器ID 新名称
# 运行容器
docker run -itd <镜像名> /bin/bash
# 进入容器
docker exec -it  /bin/bash
# 文件复制
docker cp ~/test.txt :/opt/           # 主机复制到容器
docker cp :/opt/test.txt /opt         # 容器复制到主机     2.3.2 查看容器
# 查看正在运行的容器
docker ps
# 查看所有容器
docker ps -a2.3.2 批量操作
# 批量停止容器
docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash
# 批量清理后台停止的容器
docker rm $(docker ps -a -q)
# 批量删除所有容器
docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash
# 批量删除镜像
docker images | awk 'NR>=2{print "docker rmi "$3}'| bash            # 批量删除镜像
docker images |awk 'NR>=2{print "docker rmi "$1 ":" $2}'|bash       # 批量删除同id的镜像3. Docker 网络管理
3.1 网络模式
主要网络模式:
- Bridge模式(默认) - 容器通过docker0网桥通信 
- 支持端口映射: - -p 43000:80
 
- Host模式 - 容器直接使用宿主机网络栈 
- 无独立IP,性能最佳 
 
- Container模式 - 共享其他容器的网络命名空间 
- 多个容器使用相同IP 
 
- None模式 - 无网络配置,只有lo接口 
- 安全性最高 
 
3.2 网络实践
端口映射
# 随机端口映射
docker run -d --name test1 -P nginx
# 指定端口映射
docker run -d --name test2 -p 43000:80 nginx自定义网络
# 创建自定义网络
docker network create --subnet=172.18.0.0/16 mynetwork
# 使用指定IP运行容器
docker run -itd --name test4 --net mynetwork --ip 172.18.0.10 centos:7 /bin/bash4. 关键知识点总结
4.1 核心概念
- 一次封装,到处运行:Docker 的核心设计理念 
- 镜像分层:基于联合文件系统的写时复制机制 
- 容器隔离:通过Namespace和Cgroup实现 
4.2 最佳实践
- 容器设计:一个容器只运行一个进程 
- 数据持久化:使用Volume存储重要数据 
- 网络规划:根据需求选择合适的网络模式 
- 资源限制:使用Cgroup限制容器资源使用 
4.3 故障排查
- 查看容器日志: - docker logs <container_id>
- 检查容器状态: - docker ps -a
- 进入容器调试: - docker exec -it <container_id> /bin/bash
这份整理突出了Docker学习的核心脉络,从基础概念到实践操作,再到网络管理和故障排查,形成了一个完整的学习路径。重点强调了Docker与传统虚拟机的区别、核心架构组件以及实际操作的命令和技巧。
 
                    
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号