Docker 入门指南
Posted on Sat 20 June 2026 in 技术
什么是 Docker?
Docker 是一种开源的容器化平台,它让开发者能够将应用程序及其依赖环境打包到一个轻量级、可移植的容器中,然后在任何支持 Docker 的系统上运行。
简单来说:"一次构建,到处运行"。
容器 vs 虚拟机
| 特性 | 容器 | 虚拟机 |
|---|---|---|
| 启动速度 | 秒级 | 分钟级 |
| 资源占用 | 轻量(共享宿主机内核) | 重量(独立 OS) |
| 镜像大小 | MB ~ GB | GB ~ 几十 GB |
| 隔离性 | 进程级隔离 | 完全隔离 |
| 性能损耗 | 接近原生 | 有一定损耗 |
安装 Docker
Linux(Ubuntu)
# 更新包索引
sudo apt update
# 安装依赖
sudo apt install ca-certificates curl
# 添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 添加仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
# 验证安装
sudo docker run hello-world
macOS / Windows
访问 Docker Desktop 官网 下载安装包,一键安装即可。
核心概念
镜像(Image)
镜像是一个只读模板,包含运行应用所需的代码、运行时、库、环境变量和配置文件。你可以把镜像理解为一个应用程序的快照。
# 拉取镜像
docker pull nginx:latest
# 查看本地镜像
docker images
# 删除镜像
docker rmi nginx:latest
容器(Container)
容器是镜像的运行实例。你可以启动、停止、删除容器,一个镜像可以启动多个容器。
# 运行一个 Nginx 容器
docker run -d --name my-nginx -p 8080:80 nginx
# 查看运行中的容器
docker ps
# 查看所有容器(含已停止的)
docker ps -a
# 停止容器
docker stop my-nginx
# 启动已停止的容器
docker start my-nginx
# 删除容器
docker rm my-nginx
Dockerfile
Dockerfile 是一个文本文件,定义了如何构建镜像。
# 使用 Python 官方镜像作为基础
FROM python:3.12-slim
# 设置工作目录
WORKDIR /app
# 复制依赖文件
COPY requirements.txt .
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 复制应用代码
COPY . .
# 暴露端口
EXPOSE 8000
# 启动命令
CMD ["python", "app.py"]
构建并运行:
# 构建镜像
docker build -t my-app .
# 运行容器
docker run -d -p 8000:8000 my-app
常用 Docker 命令速查
生命周期管理
| 命令 | 用途 |
|---|---|
docker run |
创建并启动容器 |
docker start/stop |
启停已存在的容器 |
docker restart |
重启容器 |
docker pause/unpause |
暂停/恢复容器进程 |
docker rm |
删除容器 |
docker container prune |
删除所有已停止的容器 |
镜像管理
| 命令 | 用途 |
|---|---|
docker pull |
拉取镜像 |
docker images |
列出本地镜像 |
docker rmi |
删除镜像 |
docker build |
从 Dockerfile 构建镜像 |
docker image prune |
删除未使用的镜像 |
查看与调试
| 命令 | 用途 |
|---|---|
docker ps |
查看运行中的容器 |
docker logs |
查看容器日志 |
docker exec -it <容器名> bash |
进入容器内部 |
docker inspect |
查看容器详细信息 |
docker stats |
查看容器资源占用 |
数据持久化(Volumes)
容器删除后,内部数据会丢失。使用卷(volume)或绑定挂载(bind mount)来持久化数据。
# 使用卷
docker run -d -v mydata:/data nginx
# 绑定挂载宿主机目录
docker run -d -v /宿主机/路径:/容器/路径 nginx
网络
# 创建自定义网络
docker network create my-network
# 在指定网络中运行容器
docker run -d --network my-network --name web nginx
# 查看网络
docker network ls
实战:运行一个 Python Web 应用
创建一个简单的 FastAPI 应用并用 Docker 运行。
项目结构:
my-fastapi-app/
├── app.py
├── requirements.txt
└── Dockerfile
app.py:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello Docker!"}
requirements.txt:
fastapi
uvicorn
Dockerfile:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
构建并运行:
docker build -t my-fastapi .
docker run -d -p 8000:8000 my-fastapi
访问 http://localhost:8000 即可看到 {"message": "Hello Docker!"}。
Docker Compose
当你有多个容器需要协同工作时(例如 Web 应用 + 数据库),Docker Compose 可以帮你用一个 YAML 文件定义和运行多容器应用。
docker-compose.yml:
services:
web:
build: .
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_DB: myapp
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
启动:
docker compose up -d
总结
Docker 的核心价值在于环境一致性——开发环境、测试环境、生产环境使用同一个镜像,彻底告别"在我电脑上能跑"的尴尬。
入门三步走: 1. 安装 Docker → 学会拉取和运行镜像 2. 理解 Dockerfile → 学会构建自己的镜像 3. 掌握 Compose → 学会编排多容器应用
更多内容请查阅 Docker 官方文档