目录

Docker-全阶段学习指南

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 docker
2.1.2 镜像加速配置

# 华为云加速器
mkdir -p /etc/docker
​
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [ "https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com" ]
}
EOF

2.2 镜像管理

2.2.1 基本命令

#查看 Docker 版本
docker --version
​
#查看 Docker 系统信息
docker info
2.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.tar

2.3 容器管理

2.3.1 生命周期管理

# 创建容器
docker create -it nginx:latest /bin/bash
​
# 启动/停止
docker start <container_id>
docker stop <container_id>
​
# 创建一个自定义名称的容器
docker run -itd --name 自定义名称 镜像名 [命令]
​
# 修改容器名称
docker rename 原容器名/原容器ID 新名称
​
# 运行容器
docker run -itd <镜像名> /bin/bash
​
# 进入容器
docker exec -it <container_id> /bin/bash
​
# 文件复制
docker cp ~/test.txt <container_id>:/opt/           # 主机复制到容器
docker cp <container_id>:/opt/test.txt /opt         # 容器复制到主机
2.3.2 查看容器

# 查看正在运行的容器
docker ps
​
# 查看所有容器
docker ps -a
2.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 网络模式

主要网络模式:
  1. Bridge模式(默认)

    • 容器通过docker0网桥通信
    • 支持端口映射:-p 43000:80
  2. Host模式

    • 容器直接使用宿主机网络栈
    • 无独立IP,性能最佳
  3. Container模式

    • 共享其他容器的网络命名空间
    • 多个容器使用相同IP
  4. 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/bash

4. 关键知识点总结

4.1 核心概念

  • 一次封装,到处运行:Docker 的核心设计理念
  • 镜像分层:基于联合文件系统的写时复制机制
  • 容器隔离:通过Namespace和Cgroup实现

4.2 最佳实践

  1. 容器设计:一个容器只运行一个进程
  2. 数据持久化:使用Volume存储重要数据
  3. 网络规划:根据需求选择合适的网络模式
  4. 资源限制:使用Cgroup限制容器资源使用

4.3 故障排查

  • 查看容器日志:docker logs <container_id>
  • 检查容器状态:docker ps -a
  • 进入容器调试:docker exec -it <container_id> /bin/bash

这份整理突出了Docker学习的核心脉络,从基础概念到实践操作,再到网络管理和故障排查,形成了一个完整的学习路径。重点强调了Docker与传统虚拟机的区别、核心架构组件以及实际操作的命令和技巧。