容器技术发展时间线:
容器技术发展历程:
┌─────────────────────────────────────────┐
│ 容器技术演进 │
├─────────────────────────────────────────┤
│ │
│ 2000年: FreeBSD Jails │
│ ├─ 第一个容器技术 │
│ └─ 系统级虚拟化 │
│ │
│ 2006年: Google cgroups │
│ ├─ 进程组资源控制 │
│ └─ Linux内核特性 │
│ │
│ 2008年: LXC (Linux Containers) │
│ ├─ 用户空间容器工具 │
│ └─ 完整容器系统 │
│ │
│ 2013年: Docker │
│ ├─ 容器标准化 │
│ ├─ 镜像格式统一 │
│ └─ 易用性提升 │
│ │
│ 2015年: OCI (Open Container Initiative)│
│ ├─ 容器标准组织 │
│ ├─ 运行时规范 │
│ └─ 镜像规范 │
│ │
│ 2017年: Kubernetes成为主流 │
│ ├─ 容器编排标准 │
│ └─ 云原生生态 │
│ │
│ 2020年: 容器技术成熟 │
│ ├─ Serverless容器 │
│ ├─ 边缘计算 │
│ └─ 多云部署 │
│ │
│ 未来: 容器无处不在 │
│ ├─ WebAssembly │
│ ├─ 安全容器 │
│ └─ 混合云 │
└─────────────────────────────────────────┘
东巴文理解:
容器技术对比:
┌──────────────────┬──────────────┬──────────────┐
│ 技术 │ 特点 │ 应用场景 │
├──────────────────┼──────────────┼──────────────┤
│ FreeBSD Jails │ 系统级隔离 │ BSD系统 │
│ LXC │ 完整容器系统 │ Linux系统 │
│ Docker │ 标准化容器 │ 跨平台 │
│ Kubernetes │ 容器编排 │ 集群管理 │
│ Serverless │ 无服务器 │ 事件驱动 │
└──────────────────┴──────────────┴──────────────┘
技术演进趋势:
├─ 隔离性增强: 从进程隔离到内核隔离
├─ 标准化: 从私有格式到开放标准
├─ 易用性: 从命令行到图形界面
├─ 生态化: 从单机到集群到云原生
└─ 安全性: 从共享内核到安全容器
Docker版本演进:
Docker版本演进:
┌─────────────────────────────────────────┐
│ Docker版本历史 │
├─────────────────────────────────────────┤
│ │
│ Docker 0.1 (2013年3月) │
│ ├─ 首次发布 │
│ └─ 基本容器功能 │
│ │
│ Docker 1.0 (2014年6月) │
│ ├─ 生产就绪 │
│ ├─ 镜像仓库 │
│ └─ Docker Compose │
│ │
│ Docker 1.12 (2016年7月) │
│ ├─ Docker Swarm模式 │
│ ├─ 服务发现 │
│ └─ 负载均衡 │
│ │
│ Docker 17.03 (2017年3月) │
│ ├─ CE/EE版本分离 │
│ ├─ 多阶段构建 │
│ └─ 新的版本号方案 │
│ │
│ Docker 18.09 (2018年10月) │
│ ├─ BuildKit │
│ ├─ 容器SSH │
│ └─ GPU支持 │
│ │
│ Docker 19.03 (2019年7月) │
│ ├─ rootless模式 │
│ ├─ 构建增强 │
│ └─ 安全改进 │
│ │
│ Docker 20.10 (2020年12月) │
│ ├─ cgroups v2支持 │
│ ├─ Windows GPU支持 │
│ └─ 日志驱动增强 │
│ │
│ Docker 23.0 (2023年) │
│ ├─ Builder V2 │
│ ├─ 安全增强 │
│ └─ 性能优化 │
└─────────────────────────────────────────┘
Docker生态工具链:
Docker生态工具:
┌─────────────────────────────────────────┐
│ Docker生态系统 │
├─────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────┐ │
│ │ 开发工具 │ │
│ │ ├─ Docker Desktop │ │
│ │ ├─ Docker Compose │ │
│ │ ├─ Docker Hub │ │
│ │ └─ Docker Scout │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 构建工具 │ │
│ │ ├─ BuildKit │ │
│ │ ├─ Buildx │ │
│ │ ├─ Kaniko │ │
│ │ └─ Buildah │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 编排工具 │ │
│ │ ├─ Docker Swarm │ │
│ │ ├─ Kubernetes │ │
│ │ ├─ Docker Compose │ │
│ │ └─ Nomad │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 监控工具 │ │
│ │ ├─ Prometheus │ │
│ │ ├─ Grafana │ │
│ │ ├─ cAdvisor │ │
│ │ └─ Datadog │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 安全工具 │ │
│ │ ├─ Docker Scout │ │
│ │ ├─ Trivy │ │
│ │ ├─ Clair │ │
│ │ └─ Falco │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
工具选择建议:
工具选择指南:
┌──────────────────┬──────────────┬──────────────┐
│ 场景 │ 推荐工具 │ 说明 │
├──────────────────┼──────────────┼──────────────┤
│ 本地开发 │ Docker Desktop│ 易用性好 │
│ 多容器应用 │ Docker Compose│ 配置简单 │
│ 生产集群 │ Kubernetes │ 功能强大 │
│ CI/CD构建 │ BuildKit │ 性能高 │
│ 安全扫描 │ Docker Scout │ 集成度高 │
│ 监控告警 │ Prometheus │ 生态完善 │
└──────────────────┴──────────────┴──────────────┘
云原生核心概念:
云原生(CNCF定义):
┌─────────────────────────────────────────┐
│ 云原生架构 │
├─────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────┐ │
│ │ 微服务架构 │ │
│ │ ├─ 服务拆分 │ │
│ │ ├─ 独立部署 │ │
│ │ └─ 松耦合 │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 容器化 │ │
│ │ ├─ 应用容器化 │ │
│ │ ├─ 标准化部署 │ │
│ │ └─ 资源隔离 │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ DevOps │ │
│ │ ├─ 持续集成 │ │
│ │ ├─ 持续交付 │ │
│ │ └─ 自动化运维 │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 持续交付 │ │
│ │ ├─ 自动化流程 │ │
│ │ ├─ 快速迭代 │ │
│ │ └─ 可靠发布 │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
云原生技术栈:
云原生技术栈:
┌──────────────────┬──────────────┬──────────────┐
│ 层次 │ 技术 │ 功能 │
├──────────────────┼──────────────┼──────────────┤
│ 应用层 │ 微服务 │ 业务逻辑 │
│ 服务层 │ Service Mesh │ 服务通信 │
│ 编排层 │ Kubernetes │ 容器编排 │
│ 容器层 │ Docker │ 容器运行时 │
│ 基础设施层 │ 云平台 │ 计算资源 │
└──────────────────┴──────────────┴──────────────┘
CNCF项目全景图:
CNCF项目分类:
┌─────────────────────────────────────────┐
│ CNCF项目全景 │
├─────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────┐ │
│ │ 应用定义与构建 │ │
│ │ ├─ Helm │ │
│ │ ├─ Operator Framework │ │
│ │ └─ Kustomize │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 编排与管理 │ │
│ │ ├─ Kubernetes │ │
│ │ ├─ Docker Swarm │ │
│ │ └─ Nomad │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 运行时 │ │
│ │ ├─ containerd │ │
│ │ ├─ CRI-O │ │
│ │ └─ runc │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 服务发现与负载均衡 │ │
│ │ ├─ CoreDNS │ │
│ │ ├─ Envoy │ │
│ │ └─ Istio │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 可观测性与分析 │ │
│ │ ├─ Prometheus │ │
│ │ ├─ Grafana │ │
│ │ └─ Jaeger │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
微服务架构模式:
# 微服务架构示例
version: '3.8'
services:
# API Gateway
api-gateway:
image: nginx:alpine
deploy:
replicas: 2
resources:
limits:
cpus: '0.5'
memory: 512M
networks:
- frontend
ports:
- "80:80"
# 用户服务
user-service:
image: user-service:latest
deploy:
replicas: 3
resources:
limits:
cpus: '0.5'
memory: 512M
environment:
- DB_HOST=user-db
- REDIS_HOST=redis
networks:
- frontend
- backend
depends_on:
- user-db
- redis
# 订单服务
order-service:
image: order-service:latest
deploy:
replicas: 3
resources:
limits:
cpus: '0.5'
memory: 512M
environment:
- DB_HOST=order-db
- RABBITMQ_HOST=rabbitmq
networks:
- frontend
- backend
depends_on:
- order-db
- rabbitmq
# 数据库
user-db:
image: postgres:15-alpine
volumes:
- user-db-data:/var/lib/postgresql/data
networks:
- backend
order-db:
image: postgres:15-alpine
volumes:
- order-db-data:/var/lib/postgresql/data
networks:
- backend
# 缓存
redis:
image: redis:7-alpine
networks:
- backend
# 消息队列
rabbitmq:
image: rabbitmq:3-management-alpine
networks:
- backend
networks:
frontend:
driver: overlay
backend:
driver: overlay
volumes:
user-db-data:
order-db-data:
Istio服务网格:
# Istio配置示例
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: user-service
spec:
hosts:
- user-service
http:
- route:
- destination:
host: user-service
subset: v1
weight: 90
- destination:
host: user-service
subset: v2
weight: 10
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: user-service
spec:
host: user-service
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
安全容器技术:
安全容器技术对比:
┌──────────────────┬──────────────┬──────────────┐
│ 技术 │ 特点 │ 应用场景 │
├──────────────────┼──────────────┼──────────────┤
│ gVisor │ 用户态内核 │ 多租户环境 │
│ Kata Containers│ 轻量虚拟机 │ 高安全需求 │
│ Firecracker │ 微虚拟机 │ Serverless │
│ Nabla │ Unikernel │ 安全隔离 │
└──────────────────┴──────────────┴──────────────┘
安全容器架构:
┌─────────────────────────────────────────┐
│ 安全容器架构 │
├─────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────┐ │
│ │ 应用容器 │ │
│ │ ├─ 用户应用 │ │
│ │ └─ 依赖库 │ │
│ └─────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────┐ │
│ │ 容器运行时 │ │
│ │ ├─ gVisor │ │
│ │ ├─ Kata │ │
│ │ └─ Firecracker │ │
│ └─────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────┐ │
│ │ 宿主机内核 │ │
│ │ ├─ Linux Kernel │ │
│ │ └─ KVM │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
gVisor使用示例:
# 安装gVisor
curl -fsSL https://gvisor.dev/archive.key | sudo gpg --dearmor -o /usr/share/keyrings/gvisor-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/gvisor-archive-keyring.gpg] https://storage.googleapis.com/gvisor/releases release main" | sudo tee /etc/apt/sources.list.d/gvisor.list > /dev/null
sudo apt-get update && sudo apt-get install -y runsc
# 配置Docker使用gVisor
sudo tee /etc/docker/daemon.json <<EOF
{
"runtimes": {
"runsc": {
"path": "/usr/bin/runsc"
}
}
}
EOF
# 重启Docker
sudo systemctl restart docker
# 使用gVisor运行容器
docker run --runtime=runsc -d nginx
镜像安全最佳实践:
# 安全的Dockerfile示例
FROM alpine:3.18
# 安装安全更新
RUN apk update && apk upgrade && \
apk add --no-cache \
ca-certificates \
tzdata && \
rm -rf /var/cache/apk/*
# 创建非root用户
RUN addgroup -g 1001 -S appgroup && \
adduser -u 1001 -S appuser -G appgroup
# 设置工作目录
WORKDIR /app
# 复制应用文件
COPY --chown=appuser:appgroup app /app
# 切换用户
USER appuser
# 只读文件系统
VOLUME ["/tmp", "/var/run"]
# 安全配置
ENV NO_UPDATE_NOTIFIER=true \
NODE_ENV=production
# 健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1
# 启动应用
CMD ["./app"]
WebAssembly容器:
WebAssembly容器:
┌─────────────────────────────────────────┐
│ WebAssembly容器架构 │
├─────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────┐ │
│ │ WebAssembly模块 │ │
│ │ ├─ 编译后的代码 │ │
│ │ └─ 跨平台二进制 │ │
│ └─────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────┐ │
│ │ WebAssembly运行时 │ │
│ │ ├─ Wasmer │ │
│ │ ├─ Wasmtime │ │
│ │ └─ WasmEdge │ │
│ └─────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────┐ │
│ │ 容器运行时 │ │
│ │ ├─ Docker │ │
│ │ ├─ containerd │ │
│ │ └─ Krustlet │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
WebAssembly优势:
├─ 启动速度快: 毫秒级启动
├─ 安全隔离: 沙箱环境
├─ 跨平台: 一次编译,到处运行
├─ 资源占用小: 轻量级运行时
└─ 多语言支持: Rust、C++、Go等
WebAssembly示例:
// main.rs
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub fn greet(name: &str) -> String {
format!("Hello, {}!", name)
}
#[wasm_bindgen]
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
# 编译WebAssembly
cargo build --target wasm32-unknown-unknown --release
# 使用WasmEdge运行
wasmedge target/wasm32-unknown-unknown/release/main.wasm
# 使用Krustlet在Kubernetes中运行
kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: wasm-demo
spec:
containers:
- name: wasm
image: webassembly.azurecr.io/hello-wasm:v1
nodeSelector:
kubernetes.io/arch: wasm32-wagi
EOF
边缘计算容器:
边缘计算架构:
┌─────────────────────────────────────────┐
│ 边缘计算容器架构 │
├─────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────┐ │
│ │ 云端 │ │
│ │ ├─ Kubernetes集群 │ │
│ │ ├─ 镜像仓库 │ │
│ │ └─ 管理控制台 │ │
│ └─────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────┐ │
│ │ 边缘节点 │ │
│ │ ├─ K3s │ │
│ │ ├─ MicroK8s │ │
│ │ └─ KubeEdge │ │
│ └─────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────┐ │
│ │ 设备层 │ │
│ │ ├─ IoT设备 │ │
│ │ ├─ 传感器 │ │
│ │ └─ 执行器 │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
K3s边缘部署:
# 安装K3s
curl -sfL https://get.k3s.io | sh -
# 查看节点
sudo k3s kubectl get nodes
# 部署应用到边缘
sudo k3s kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: edge-app
spec:
replicas: 1
selector:
matchLabels:
app: edge-app
template:
metadata:
labels:
app: edge-app
spec:
containers:
- name: edge-app
image: myapp:latest
resources:
limits:
cpu: "200m"
memory: "256Mi"
requests:
cpu: "100m"
memory: "128Mi"
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
EOF
多云架构模式:
多云架构:
┌─────────────────────────────────────────┐
│ 多云架构模式 │
├─────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────┐ │
│ │ 应用层 │ │
│ │ ├─ 统一API │ │
│ │ └─ 服务网格 │ │
│ └─────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────┐ │
│ │ 编排层 │ │
│ │ ├─ Kubernetes Federation │ │
│ │ ├─ Rancher │ │
│ │ └─ Anthos │ │
│ └─────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────┐ │
│ │ 云平台 │ │
│ │ ├─ AWS EKS │ │
│ │ ├─ Azure AKS │ │
│ │ ├─ GCP GKE │ │
│ │ └─ 阿里云 ACK │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
多云部署示例:
# 多云部署配置
apiVersion: federation.k8s.io/v1alpha1
kind: FederatedDeployment
metadata:
name: web-app
spec:
template:
metadata:
labels:
app: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
spec:
containers:
- name: web
image: nginx:alpine
ports:
- containerPort: 80
placement:
clusters:
- name: cluster-aws
- name: cluster-azure
- name: cluster-gcp
overrides:
- clusterName: cluster-aws
clusterOverrides:
- path: spec.replicas
value: 5
- clusterName: cluster-azure
clusterOverrides:
- path: spec.replicas
value: 3
- clusterName: cluster-gcp
clusterOverrides:
- path: spec.replicas
value: 2
Docker技能树:
Docker技能树:
┌─────────────────────────────────────────┐
│ Docker技能体系 │
├─────────────────────────────────────────┤
│ │
│ 基础技能: │
│ ├─ Docker安装与配置 │
│ ├─ 镜像管理 │
│ ├─ 容器操作 │
│ ├─ 网络配置 │
│ └─ 存储管理 │
│ │
│ 中级技能: │
│ ├─ Dockerfile编写 │
│ ├─ Docker Compose │
│ ├─ 私有仓库搭建 │
│ ├─ 监控与日志 │
│ └─ 安全配置 │
│ │
│ 高级技能: │
│ ├─ 性能调优 │
│ ├─ 故障排查 │
│ ├─ CI/CD集成 │
│ ├─ 插件开发 │
│ └─ 容器编排 │
│ │
│ 专家技能: │
│ ├─ 架构设计 │
│ ├─ 安全容器 │
│ ├─ 多云部署 │
│ ├─ 边缘计算 │
│ └─ 云原生架构 │
└─────────────────────────────────────────┘
学习路径建议:
Docker学习路径:
┌──────────────────┬──────────────┬──────────────┐
│ 阶段 │ 学习内容 │ 时间建议 │
├──────────────────┼──────────────┼──────────────┤
│ 入门阶段 │ 基础概念 │ 1-2周 │
│ 初级阶段 │ 基本操作 │ 2-3周 │
│ 中级阶段 │ 进阶特性 │ 3-4周 │
│ 高级阶段 │ 生产实践 │ 4-6周 │
│ 专家阶段 │ 架构设计 │ 持续学习 │
└──────────────────┴──────────────┴──────────────┘
学习资源:
├─ 官方文档: https://docs.docker.com/
├─ 官方教程: https://docs.docker.com/get-started/
├─ 实践项目: GitHub开源项目
├─ 社区论坛: Docker Community
└─ 认证考试: Docker Certified Associate
Docker认证考试:
Docker Certified Associate (DCA):
┌─────────────────────────────────────────┐
│ DCA认证考试 │
├─────────────────────────────────────────┤
│ │
│ 考试内容: │
│ ├─ 镜像管理 (20%) │
│ ├─ 容器管理 (25%) │
│ ├─ 网络配置 (15%) │
│ ├─ 存储管理 (10%) │
│ ├─ 故障排查 (15%) │
│ └─ 安全配置 (15%) │
│ │
│ 考试时间: 90分钟 │
│ 考试题型: 多选题、多选多题 │
│ 通过分数: 60% │
│ 有效期: 2年 │
└─────────────────────────────────────────┘
相关认证考试:
容器相关认证:
┌──────────────────┬──────────────┬──────────────┐
│ 认证 │ 颁发机构 │ 难度 │
├──────────────────┼──────────────┼──────────────┤
│ DCA │ Docker │ 中级 │
│ CKA │ CNCF │ 中高级 │
│ CKAD │ CNCF │ 中级 │
│ CKS │ CNCF │ 高级 │
│ AWS容器认证 │ AWS │ 中级 │
│ Azure容器认证 │ Microsoft │ 中级 │
└──────────────────┴──────────────┴──────────────┘
容器技术发展趋势:
├─ 安全性: 安全容器、镜像安全
├─ 性能: WebAssembly、轻量级容器
├─ 边缘计算: K3s、边缘编排
├─ 多云: 联邦集群、混合云
└─ 云原生: 微服务、服务网格
Docker发展方向:
├─ 易用性: 更简单的操作
├─ 安全性: 更强的隔离
├─ 性能: 更快的启动
├─ 集成: 更好的生态
└─ 标准: 更开放的标准
持续学习建议:
├─ 关注官方动态: Docker Blog、CNCF Blog
├─ 参与社区: GitHub、Stack Overflow
├─ 实践项目: 个人项目、开源贡献
├─ 技术分享: 博客、演讲
└─ 认证考试: DCA、CKA等
技能提升路径:
1. 掌握Docker基础
2. 学习容器编排
3. 实践云原生架构
4. 深入安全领域
5. 探索前沿技术
Docker系列教程总结:
Docker系列教程:
├─ 第1章: Docker概述
├─ 第2章: Docker安装与配置
├─ 第3章: Docker核心概念
├─ 第4章: Docker镜像基础
├─ 第5章: Dockerfile基础
├─ 第6章: Docker容器基础
├─ 第7章: Docker网络
├─ 第8章: Docker存储
├─ 第9章: Docker Compose基础
├─ 第10章: Docker Compose进阶
├─ 第11章: Docker私有仓库
├─ 第12章: Docker安全
├─ 第13章: Docker监控与日志
├─ 第14章: Docker性能调优
├─ 第15章: Docker故障排查
├─ 第16章: Docker最佳实践
├─ 第17章: Docker CI/CD
├─ 第18章: Docker实战案例
├─ 第19章: Docker高级特性
└─ 第20章: Docker未来展望
技术演进: 了解容器技术的发展历程。
云原生概念: 理解云原生的核心概念。
安全容器: 了解gVisor和Kata Containers的区别。
WebAssembly: 学习WebAssembly容器技术。
边缘计算: 了解边缘计算容器架构。
多云架构: 设计一个多云部署方案。
技术调研: 调研一项新兴容器技术,编写调研报告。
架构设计: 设计一个云原生应用架构,包含:
恭喜您完成Docker系列教程学习! 🎉
感谢您的坚持和努力!
# 镜像操作
docker images # 列出镜像
docker pull <image> # 拉取镜像
docker push <image> # 推送镜像
docker rmi <image> # 删除镜像
docker build -t <name> . # 构建镜像
# 容器操作
docker ps # 列出容器
docker run <image> # 运行容器
docker stop <container> # 停止容器
docker rm <container> # 删除容器
docker exec -it <container> bash # 进入容器
# 网络操作
docker network ls # 列出网络
docker network create <name> # 创建网络
docker network rm <name> # 删除网络
# 存储操作
docker volume ls # 列出卷
docker volume create <name> # 创建卷
docker volume rm <name> # 删除卷
# 系统操作
docker info # 系统信息
docker version # 版本信息
docker system prune # 清理系统
# 使用官方基础镜像
FROM alpine:3.18
# 设置标签
LABEL maintainer="admin@example.com"
LABEL version="1.0"
# 设置环境变量
ENV APP_HOME=/app
ENV PATH="${APP_HOME}/bin:${PATH}"
# 创建工作目录
WORKDIR ${APP_HOME}
# 安装依赖
RUN apk add --no-cache \
curl \
bash
# 复制应用文件
COPY app/ ${APP_HOME}/
# 创建非root用户
RUN addgroup -g 1001 -S appgroup && \
adduser -u 1001 -S appuser -G appgroup && \
chown -R appuser:appgroup ${APP_HOME}
# 切换用户
USER appuser
# 暴露端口
EXPOSE 8080
# 健康检查
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost:8080/health || exit 1
# 启动命令
CMD ["./start.sh"]
version: '3.8'
services:
app:
image: myapp:latest
restart: unless-stopped
ports:
- "3000:3000"
environment:
- NODE_ENV=production
networks:
- app-network
volumes:
- app-data:/app/data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 3s
retries: 3
deploy:
resources:
limits:
cpus: '1.0'
memory: 1G
networks:
app-network:
driver: bridge
volumes:
app-data:
祝您在Docker的世界里探索愉快! 🚀