Docker全面学习指南(2025最新版)

Docker全面学习指南(2025最新版)

Docker全面学习指南

2025最新版

文章目录

Docker全面学习指南2025最新版一、Docker概述1.1 容器技术演进1.2 Docker核心组件1.3 Docker技术优势

二、Docker环境搭建2.1 主流平台安装2.2 配置验证2.3 国内加速配置

三、Docker核心操作3.1 镜像管理3.2 容器生命周期3.3 数据持久化

四、Dockerfile深度解析4.1 最佳实践模板4.2 高级优化技巧

五、Docker网络架构5.1 网络模式对比5.2 自定义网络

六、Docker Compose6.1 编排文件示例6.2 常用命令

七、容器安全与优化7.1 安全实践7.2 性能监控

八、生产环境实践8.1 CI/CD集成8.2 云平台集成

九、学习路线建议十、学习资源推荐

一、Docker概述

1.1 容器技术演进

虚拟化技术发展:物理机 → 虚拟机 → 容器LXC(Linux Containers)技术基础Docker诞生背景(2013年DotCloud公司开源)

1.2 Docker核心组件

+-------------------+

| Docker Client |

+-------------------+

|

v

+-------------------+

| Docker Daemon |

+-------------------+

|

v

+-------------------+

| Containers | +-------------------+

| (运行时实例) |<---| Images |

+-------------------+ | (只读模板) |

+-------------------+

1.3 Docker技术优势

环境一致性保证资源利用率提升(对比虚拟机)秒级启动/停止微服务架构最佳伴侣DevOps流水线核心组件

二、Docker环境搭建

2.1 主流平台安装

# Linux(Ubuntu示例)

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io

# Windows

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Install-Module DockerMsftProvider -Force

Install-Package Docker -ProviderName DockerMsftProvider

# macOS

brew install --cask docker

2.2 配置验证

docker --version # 版本验证

docker run hello-world # 运行测试容器

docker info # 系统信息查看

2.3 国内加速配置

// /etc/docker/daemon.json

{

"registry-mirrors": [

"https://registry.docker-cn.com",

"https://docker.mirrors.ustc.edu.cn"

],

"insecure-registries": [],

"experimental": false

}

三、Docker核心操作

3.1 镜像管理

docker search nginx # 搜索镜像

docker pull nginx:1.23 # 拉取指定版本

docker image ls # 列出本地镜像

docker image prune # 清理无用镜像

3.2 容器生命周期

docker run -d -p 80:80 --name web nginx # 启动容器

docker exec -it web bash # 进入容器

docker stop web # 停止容器

docker start web # 启动已停止容器

docker rm -f web # 强制删除容器

3.3 数据持久化

# 卷管理

docker volume create myvol

docker run -v myvol:/data ...

# 绑定挂载

docker run -v /host/path:/container/path ...

四、Dockerfile深度解析

4.1 最佳实践模板

# 阶段1:构建环境

FROM node:18-alpine as builder

WORKDIR /app

COPY package*.json ./

RUN npm ci

COPY . .

RUN npm run build

# 阶段2:生产环境

FROM nginx:1.23-alpine

COPY --from=builder /app/dist /usr/share/nginx/html

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

4.2 高级优化技巧

多阶段构建减少镜像体积使用.dockerignore文件镜像层合并优化安全扫描工具集成

docker scan # 安全扫描

五、Docker网络架构

5.1 网络模式对比

模式说明适用场景bridge默认NAT网络(docker0)单主机容器通信host共享主机网络栈高性能网络需求overlay跨主机容器网络Swarm集群macvlan直接分配MAC地址传统网络集成

5.2 自定义网络

docker network create --driver bridge mynet

docker run --network=mynet ...

六、Docker Compose

6.1 编排文件示例

version: '3.8'

services:

web:

image: nginx:1.23

ports:

- "80:80"

volumes:

- ./html:/usr/share/nginx/html

networks:

- frontend

db:

image: postgres:15

environment:

POSTGRES_PASSWORD: example

volumes:

- pgdata:/var/lib/postgresql/data

networks:

- backend

volumes:

pgdata:

networks:

frontend:

backend:

6.2 常用命令

docker compose up -d # 启动服务

docker compose down -v # 停止并清理

docker compose logs -f # 实时日志查看

七、容器安全与优化

7.1 安全实践

非root用户运行容器

USER 1000:1000

只读文件系统

docker run --read-only ...

资源限制

docker run -m 512m --cpus 1.5 ...

7.2 性能监控

docker stats # 实时资源监控

docker top # 进程查看

docker system df # 磁盘使用统计

八、生产环境实践

8.1 CI/CD集成

# GitHub Actions示例

name: Build and Push

on:

push:

branches: [ main ]

jobs:

build:

runs-on: ubuntu-latest

steps:

- uses: actions/checkout@v3

- name: Build Docker image

run: docker build -t myapp:${{ github.sha }} .

- name: Push to Registry

run: |

echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin

docker push myapp:${{ github.sha }}

8.2 云平台集成

AWS ECS/EKSAzure ACIGoogle Cloud Run阿里云ACK

九、学习路线建议

基础阶段(1周):

容器基本操作Dockerfile编写单机容器管理 进阶阶段(2周):

网络与存储配置Docker Compose编排镜像优化技巧 高级阶段(3周+):

容器安全加固Kubernetes集成服务网格(Service Mesh)云原生架构设计

十、学习资源推荐

官方文档:https://docs.docker.com/实践平台:Play with Docker(https://labs.play-with-docker.com/)认证体系:Docker Certified Associate(DCA)经典书籍:

《Docker Deep Dive》(最新第3版)《Kubernetes in Action》

本指南持续更新,建议配合实际操作练习。建议学习路径:先掌握单机容器操作 → 学习Docker Compose → 深入Dockerfile优化 → 最后研究容器编排和云原生架构。