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与传统虚拟机的区别、核心架构组件以及实际操作的命令和技巧。

相关推荐
霖.243 小时前
K8s实践中的重点知识
linux·云原生·kubernetes
zhujilisa4 小时前
k8s基础
云原生·容器·kubernetes
努力打怪升级5 小时前
ACA云原生工程师认证知识点脑图
云原生
极客天成ScaleFlash14 小时前
极客天成让统一存储从云原生‘进化’到 AI 原生: 不是版本升级,而是基因重组
人工智能·云原生
小闫BI设源码15 小时前
Dockerfile
云原生·eureka·日志收集·自动重启·容器监控·健康检查·生产环境部署
码路工人21 小时前
第8章:K8s 核心概念(上)- 工作负载
docker·云原生·容器
货拉拉技术1 天前
货拉拉离线大数据跨云迁移 - 数据迁移篇
大数据·云原生
qq_569384121 天前
K8S (使用步骤)
云原生·容器·kubernetes