欢迎光临
我们一直在努力

Docker 核心技术与实战

一、什么是 Docker?

1. 容器化技术基本概念

Docker 是一种容器化技术,能把代码 + 依赖 + 配置 + 环境打包成一个独立、可移植、可直接运行的包。简单理解:Docker = 把软件打包成 “绿色版”,在哪都能跑,不挑系统、不报错。

2. Docker vs 传统虚拟机

特性 Docker 容器 虚拟机(VM) 体积 小(MB 级) 大(GB 级) 启动速度 秒级 分钟级 性能 接近原生 损耗大 隔离 进程级隔离 完全系统隔离 占用资源 极少 很高 一句话总结:虚拟机是 “整套电脑”,Docker 是 “单个软件运行环境”。

3. Docker 三大核心组件

镜像(Image):只读的软件包(如系统、Python、MySQL) 容器(Container):镜像运行起来的实例(正在运行的软件) 仓库(Registry):存放镜像的地方(如 Docker Hub、阿里云)

二、Docker 的优势

1. 轻量 & 高性能

共享宿主机内核 不启动完整系统 资源占用极低

2. 跨平台一致运行

一次打包,到处运行开发、测试、生产环境完全一样,彻底解决:“在我电脑上能跑,你那不行” 的问题。

3. 快速启动 & 高效扩容

秒级启动 一键复制容器 非常适合微服务、高并发场景

4. 环境隔离

不同应用之间互不干扰: Python2 和 Python3 共存 MySQL5.7 和 MySQL8.0 共存 不污染系统环境

三、Docker 核心概念(必须掌握)

1. 镜像(Image)

只读模板 分层存储(修改只增不减,节省空间) 可以继承、叠加、共享 例:python:3.11、mysql:8.0、nginx:alpine

2. 容器(Container)

镜像的运行实例 可启动、停止、删除 每个容器相互隔离 镜像 = 安装包,容器 = 运行中的软件

3. 仓库(Registry)

Docker Hub:公共仓库(默认) 阿里云 / 腾讯云:国内加速器 私有仓库:公司内部使用

4. Dockerfile

用来自动构建镜像的脚本 一行行命令告诉 Docker 如何打包 可重复、可版本管理、可团队共享

四、Docker 安装与配置

  • 安装命令(Linux)
  • 一键安装(官方推荐)

    curl -fsSL https://get.docker.com | bash

    启动服务

    systemctl start docker
    systemctl enable docker

  • Windows / macOS 直接下载 Docker Desktop 图形版,双击安装。
  • 配置国内镜像加速器(必须配!) 编辑 /etc/docker/daemon.json:
  • {
    "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
    ]
    }

  • 验证安装成功
  • docker version
    docker info
    docker run hello-world

    五、Docker 常用命令(最常用合集)

  • 镜像命令
  • docker pull nginx # 下载镜像
    docker images # 查看本地镜像
    docker rmi nginx # 删除镜像
    docker build -t myapp . # 用Dockerfile构建镜像

  • 容器命令
  • docker run -d -p 80:80 nginx # 后台运行,端口映射
    docker ps # 查看运行中容器
    docker ps -a # 查看所有容器
    docker stop 容器ID # 停止
    docker rm 容器ID # 删除

  • 进入容器 & 日志
  • docker exec -it 容器ID /bin/bash # 进入容器内部
    docker logs 容器ID # 查看日志

    六、Dockerfile 详解(打包脚本)

  • 基础指令(必会)
  • dockerfile
    FROM python:3.11 # 基础镜像
    WORKDIR /app # 工作目录
    COPY . . # 复制文件
    RUN pip install -r req.txt# 安装依赖
    CMD ["uvicorn", "main:app"]# 启动命令

  • 多阶段构建(减小体积)
  • 构建阶段

    FROM python:3.11 AS builder
    COPY . .
    RUN pip install -r req.txt

    运行阶段(更小)

    FROM python:3.11-slim
    COPY –from=builder /app .
    CMD ["python", "main.py"]

  • 最佳实践减少 RUN 层数 使用 .dockerignore 排除无用文件 使用轻量镜像(alpine 版本) 不存储密码、密钥在镜像里
  • 七、Docker 网络与存储

  • 网络模式 bridge:默认,独立网络,端口映射(最常用) host:共享宿主机网络 none:无网络
  • 数据持久化(重要!) 容器删除数据会丢失,必须挂载: 数据卷 Volume:Docker 管理(推荐) 绑定挂载 Bind Mount:挂载本地文件夹 bash 运行 docker run -v 本地目录:/容器目录 …
  • 跨容器通信 同一网络下可直接用容器名访问 自动 DNS 解析 八、Docker Compose 多容器编排(必会)
  • 作用 一键启动多个容器如:Python + MySQL + Redis + Nginx
  • docker-compose.yml 示例
  • version: '3'
    services:
    web:
    build: .
    ports:
    "8000:8000"
    redis:
    image: redis
    mysql:
    image: mysql:8.0
    environment:
    MYSQL_ROOT_PASSWORD: 123456

  • 常用命令
  • docker-compose up -d # 启动
    docker-compose down # 停止并删除
    docker-compose logs # 查看日志

    八、Docker 在生产环境的应用

  • 容器编排 K8s (Kubernetes):企业级容器编排 Docker Swarm:轻量级编排
  • 监控 & 日志 Prometheus + Grafana 监控 ELK 日志收集
  • 生产安全 镜像扫描漏洞 使用非 root 用户运行 最小权限原则
  • 九、常见问题与调试技巧

  • 容器启动失败
  • docker logs 容器ID # 看日志
    docker exec 进入调试

  • 镜像体积太大 使用 alpine 基础镜像 多阶段构建 清理缓存
  • 性能调优 限制 CPU / 内存 使用数据卷代替本地挂载
  • 十、未来趋势与生态

  • 云原生 & Serverless Docker 是云原生的基石,所有云平台都原生支持。
  • CI/CD 持续集成 自动化构建、测试、部署必备工具。
  • 新兴工具 Containerd:Docker 底层运行时 Podman:无 daemon 容器工具 Buildah:镜像构建工具
  • 十一、整篇文章核心总结

    Docker = 容器化打包工具 镜像 = 软件包,容器 = 运行实例 一次打包,到处运行 Docker Compose 管理多容器 企业部署、微服务、机器学习部署 必备

    赞(0)
    未经允许不得转载:171主机测评 » Docker 核心技术与实战
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址