Docker 从入门到精通:容器化部署与微服务架构实战指南
一、Docker 是什么
Docker 是一个开源的 容器化平台,用于将应用程序及其依赖打包成可移植的容器,实现快速部署与一致的运行环境。
一句话概括:
Docker = 一次构建,处处运行。
它彻底改变了开发、测试与运维的工作方式,是现代 DevOps 和微服务体系的核心工具。
二、Docker 的核心特性
| 特性 | 描述 |
|---|---|
| 轻量级 | 基于内核虚拟化,无需完整操作系统 |
| 快速启动 | 秒级启动应用 |
| 可移植性强 | 一致的环境,避免“在我机器上能跑”的问题 |
| 模块化 | 支持分层镜像与复用 |
| 版本控制 | 镜像可追踪、回滚 |
| 生态丰富 | 拥有庞大的 Docker Hub 仓库 |
| 跨平台 | 支持 Linux、macOS、Windows |
三、Docker 基本架构
+-----------------------------------------------+ | Docker CLI | +-----------------------------------------------+ | Docker Daemon (dockerd) | | - 镜像管理 - 容器运行 - 网络/卷管理 | +-----------------------------------------------+ | Linux Kernel (Namespaces, Cgroups) | +-----------------------------------------------+ | Host OS / Virtual Machine | +-----------------------------------------------+
四、Docker 安装与配置
1. 安装
sudo apt update sudo apt install docker.io -y
2. 启动 Docker
sudo systemctl start docker sudo systemctl enable docker
3. 验证
docker run hello-world
输出 “Hello from Docker!” 表示成功。
五、常用命令
| 命令 | 说明 |
|---|---|
docker pull | 拉取镜像 |
docker images | 查看镜像列表 |
docker run | 启动容器 |
docker ps -a | 查看容器 |
docker exec -it | 进入容器 |
docker stop/start/rm | 停止 / 启动 / 删除容器 |
docker logs | 查看容器日志 |
docker network ls | 查看网络 |
docker volume ls | 查看卷 |
六、镜像管理
拉取镜像
docker pull nginx:latest
构建自定义镜像
Dockerfile 示例:
FROM python:3.10 WORKDIR /app COPY . . RUN pip install flask CMD ["python", "app.py"]
构建镜像:
docker build -t myflask:v1 .
查看镜像:
docker images
删除镜像:
docker rmi myflask:v1
七、容器管理
启动容器
docker run -d -p 8080:80 nginx
命名容器
docker run -d --name web nginx
查看容器信息
docker inspect web
进入容器
docker exec -it web /bin/bash
停止与删除
docker stop web docker rm web
八、端口与网络映射
端口映射
docker run -d -p 8080:80 nginx
访问:
http://localhost:8080
创建自定义网络
docker network create mynet docker run -d --network=mynet --name=db mysql:8 docker run -d --network=mynet --name=web nginx
容器可通过服务名通信(db:3306)。
参考案例:www.rohjp.cn
九、数据卷(Volume)
创建与挂载
docker volume create data docker run -d -v data:/var/lib/mysql mysql:8
挂载主机目录:
docker run -v /home/app:/usr/src/app python:3.10
查看卷:
docker volume ls
十、Dockerfile 深入
指令说明
| 指令 | 作用 |
|---|---|
FROM | 指定基础镜像 |
RUN | 执行命令 |
COPY | 复制文件 |
WORKDIR | 设置工作目录 |
ENV | 设置环境变量 |
EXPOSE | 声明端口 |
CMD | 容器启动命令 |
ENTRYPOINT | 入口命令 |
示例
FROM node:18 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["npm", "start"]
十一、容器日志与调试
查看日志:
docker logs -f web
查看容器内运行状态:
docker top web
导出容器:
docker export web > web.tar
十二、容器与镜像备份
导出镜像:
docker save -o myflask.tar myflask:v1
导入镜像:
docker load -i myflask.tar
十三、多阶段构建
减少镜像体积:
FROM node:18 as builder WORKDIR /app COPY . . RUN npm install && npm run build FROM nginx:alpine COPY --from=builder /app/dist /usr/share/nginx/html
十四、Docker Compose 一体化部署
docker-compose.yml:
version: "3.9" services: web: build: . ports: - "8080:80" depends_on: - db db: image: mysql:8 environment: MYSQL_ROOT_PASSWORD: 123456
运行:
docker-compose up -d
十五、容器网络模式
| 模式 | 说明 |
|---|---|
bridge | 默认模式,私有网络 |
host | 与主机共享网络 |
none | 无网络 |
container | 与其他容器共享网络 |
示例:
docker run --network host nginx
十六、资源限制
docker run -d --cpus="1.5" --memory="512m" nginx
查看资源使用情况:
docker stats
十七、安全与权限
-
使用非 root 用户运行:
RUN adduser --disabled-password appuser USER appuser -
限制容器权限:
docker run --cap-drop ALL nginx -
启用安全配置:
docker scan myimage
十八、Docker Registry(私有仓库)
搭建私有镜像仓库:
docker run -d -p 5000:5000 --name registry registry:2
推送镜像:
docker tag myflask:v1 localhost:5000/myflask:v1 docker push localhost:5000/myflask:v1
拉取镜像:
docker pull localhost:5000/myflask:v1
十九、与 CI/CD 集成
GitLab CI 示例:
stages: - build - deploy build: stage: build script: - docker build -t myapp:$CI_COMMIT_SHA . - docker push myregistry.com/myapp:$CI_COMMIT_SHA
Jenkins Pipeline 示例:
stage('Build Docker') { steps { sh 'docker build -t myapp:latest .' sh 'docker-compose up -d' } }
二十、企业级实战场景
| 场景 | 实践方案 |
|---|---|
| 微服务架构部署 | 每个服务独立容器,统一网络 |
| 开发测试环境一致性 | 同一镜像运行在不同平台 |
| CI/CD 自动化发布 | Jenkins + Docker 构建与部署 |
| 高可用负载均衡 | Docker + Nginx + Compose 集群 |
| 日志与监控系统 | ELK 堆栈(Elasticsearch + Logstash + Kibana) |
| 数据分析平台 | 容器化部署 Hadoop/Spark |
| AI 推理服务 | GPU 容器化环境统一管理 |
| 安全隔离与沙箱 | 每个容器独立运行环境 |
更多推荐
所有评论(0)