Docker 概览 & Docker 命令总结
一、Docker 基础概念与原理
什么是 Docker?
Docker 是一个开源的容器平台,用于打包、分发和运行应用程序及其所有依赖项。
- 把应用、运行环境、依赖打包成一个“镜像”
- 运行镜像就生成一个“容器”,容器彼此隔离,不影响宿主机
核心概念:
| 名称 |
说明 |
| 镜像 Image |
应用 + 环境的静态模板 |
| 容器 Container |
镜像的运行实例 |
| Dockerfile |
描述如何构建镜像的脚本 |
| Registry |
镜像仓库,例如 Docker Hub |
Docker 工作原理(Linux 容器机制)
- 利用 Linux 的 namespace(隔离)和 cgroups(资源限制)实现
- 容器共享宿主机内核,但拥有独立文件系统、网络、进程空间
- 启动速度极快,资源占用小
二、Docker 镜像构建机制与实践
镜像是分层构建的
- 每个 Dockerfile 指令都会生成一个只读的文件系统层
- 构建时 Docker 利用缓存提升效率
Dockerfile 最佳实践
- 变动少的层放在前面,提高缓存命中率
- 合并多个 RUN 语句,减少层数
- 使用
.dockerignore 文件避免将无用文件打包进镜像
- 使用轻量基础镜像(如 alpine)减小体积
示例 Dockerfile
FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["python", "main.py"]
|
.dockerignore 示例
__pycache__/ .git .env *.log node_modules/
|
三、Docker Compose
Docker Compose 是什么?
- 定义和运行多容器服务的工具(使用 docker-compose.yml)
示例
version: '3.8' services: backend: build: ./backend volumes: - ./test_files:/app/test_files redis: image: redis:7
|
运行:
docker-compose up --build docker-compose down
|
四、Docker 常用命令
镜像操作
docker build -t my-image . docker images docker rmi image-id docker pull image-name docker tag source target
|
容器操作
docker run image docker run -it image bash docker run --rm image docker run -v $(pwd):/app image docker run -p 8080:80 image docker ps docker ps -a docker stop container-id docker rm container-id docker exec -it container-id bash
|
容器调试
docker logs container-id docker cp file.txt container:/path docker cp container:/path/file.txt ./ docker inspect container-id
|
清理命令
docker system prune docker image prune docker container prune docker volume prune
|
资源限制示例
docker run --memory=512m --cpus=1 image
|
五、Docker 的使用场景与优势
适用场景
- 团队统一开发环境
- CI/CD 流程打包构建测试
- 微服务部署
- 数据科学/AI 项目环境隔离
相比虚拟机的优势
| 项目 |
Docker 容器 |
虚拟机 |
| 启动速度 |
秒级 |
分钟级 |
| 占用资源 |
少(共享宿主机内核) |
多(完整系统) |
| 隔离性 |
中(内核级) |
高(硬件级) |
| 可移植性 |
高 |
一般 |
| 性能 |
几乎无损 |
有虚拟化开销 |
六、实际开发中的 Docker 工作流
- 编写 Dockerfile 定义环境和入口
- 使用
docker build 构建镜像
- 使用
docker run 启动镜像成为容器
- 容器内运行程序,无需本地配置依赖
- 可通过
docker push 发布镜像
- 与 CI/CD 工具(如 GitHub Actions)结合,形成自动化部署
如需进一步扩展,可了解多阶段构建、Docker 网络、Volume 数据持久化、Docker 安全与最佳实践等内容。