Docker
开源容器化平台,将应用及其依赖打包为轻量级容器,实现环境隔离和一致部署。
简介
Docker 是目前最主流的容器化工具,它把应用代码、运行时、系统库、配置文件打包成一个标准化的单元(容器),在任何支持 Docker 的机器上都能以完全相同的方式运行。
与虚拟机相比,Docker 容器共享宿主机内核,启动速度快(秒级)、资源占用低(MB 级)、易于分发。这使得它特别适合 ML/AI 项目的部署——复杂的依赖链(如 Pix2Text 的 ONNX Runtime + PaddleOCR + transformers)可以在容器内隔离,不会污染宿主系统。
Docker Desktop 是面向开发者的主要使用方式,支持 Windows(WSL2)、macOS 和 Linux。在 Windows 上,Docker Desktop 通过 WSL2 运行 Linux 容器,配置机制与原生 Linux 有差异(如镜像源必须在 GUI 中修改而非编辑 daemon.json)。
关键信息
- 类型:工具(开源容器化平台)
- 领域:DevOps · 部署运维 · ML 工程
- 官方网站/地址:https://www.docker.com
- 定价/开源状态:Docker Engine 开源免费;Docker Desktop 个人免费,企业需付费
- 相关概念:容器、镜像、Dockerfile、Docker Compose、Kubernetes
核心特性
容器化能力
- 环境隔离:每个容器独立运行,依赖互不干扰
- 一致部署:开发、测试、生产环境完全一致,“在我机器上能跑”不再是借口
- 轻量级:共享宿主机内核,秒级启动,MB 级占用
- 镜像分层:Dockerfile 每条指令生成一层,构建缓存加速重复构建
ML/AI 场景的价值
- 依赖隔离:ML 项目依赖链复杂(ONNX Runtime、PyTorch、PaddleOCR 等),容器化避免污染系统
- 可复现性:镜像固定版本,确保实验结果可复现
- 快速部署:
docker run即开即用,不需要安装配置 - 资源控制:可限制 CPU/内存使用,避免 ML 推理占满系统资源
Docker Desktop(Windows/macOS)
- 通过 WSL2 运行 Linux 容器(Windows)
- 配置通过 GUI 管理,非原生 Linux 的 daemon.json 方式
- Settings → Docker Engine 编辑 JSON 配置(如镜像源)
--network=host让构建过程共享宿主机网络
常用命令
# 构建镜像
docker build -t name:tag .
# 运行容器
docker run --rm image_name command
# 后台运行
docker run -d --name container_name image_name sleep 3600
# 在运行中的容器内执行命令
docker exec container_name command
# 将容器保存为新镜像
docker commit container_name new_image:tag
# 清理
docker rm -f container_name安装方式
- Windows/macOS:下载 Docker Desktop(https://www.docker.com/products/docker-desktop)
- Linux:
sudo apt install docker.io或按官方文档安装 Docker Engine
适用场景
- 应该用 Docker:ML 项目部署、依赖复杂的工具隔离、微服务架构、CI/CD 流水线
- 不需要 Docker:简单的 Python 脚本、单文件工具、不需要环境隔离的场景
不同素材中的观点
- 2026-06-13-pix2text-docker-ocr-markdown:这篇素材认为 Docker 是 ML 依赖地狱的最优解。Pix2Text 依赖链很长(ONNX Runtime、PaddleOCR、transformers 等),直接装在系统里容易污染环境,用 Docker 隔离是最干净的方案。文章特别指出在国内网络环境下需要配置镜像源,且 Docker Desktop 的配置必须在 GUI 中修改,WSL 里改 daemon.json 不生效。
实用信息
快速上手步骤
- 安装 Docker Desktop(Windows/macOS)或 Docker Engine(Linux)
- 编写 Dockerfile 定义应用环境
docker build -t name:tag .构建镜像docker run --rm name:tag运行容器
注意事项/避坑指南
- 国内镜像源:Docker Hub 在国内拉镜像经常超时,需配置
registry-mirrors - Docker Desktop 配置机制:Windows 上必须在 GUI 中修改配置,编辑
~/.docker/daemon.json不生效 --network=host:构建时共享宿主机网络,避免容器内网络不通- “容器内补装 + commit”:ML 项目依赖复杂时,先构建基础镜像,再在运行中的容器里逐个补装缺失包,最后 commit 为新镜像