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 官方文档