Docker 从入门到实践:安装、镜像、容器与 Docker Compose 完全指南(2026)

📝 291 字 · ☕ 1 分钟阅读

什么是 Docker?

Docker 是一个容器化平台,让你可以把应用及其依赖打包到一个轻量级的「容器」中,在任何 Linux 系统上运行。相比虚拟机,Docker 容器不需要模拟操作系统,启动快(毫秒级)、资源占用少。

安装 Docker

# Ubuntu 24.04 / Debian 12
sudo apt update
sudo apt install ca-certificates curl -y
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
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# 验证安装
sudo docker run hello-world

Docker 基础命令

# 镜像操作
docker pull nginx:latest       # 拉取镜像
docker images                  # 列出本地镜像
docker rmi 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            # 删除容器

# 进入容器
docker exec -it my-nginx bash

# 查看日志
docker logs -f my-nginx

编写 Dockerfile

# Dockerfile - Python Flask 应用示例
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]

构建和运行:

docker build -t my-flask-app .
docker run -d -p 5000:5000 my-flask-app

Docker Compose 多服务编排

# docker-compose.yml
version: '3.8'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    depends_on:
      - db
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: myapp
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:
docker compose up -d     # 启动所有服务
docker compose down      # 停止并删除
docker compose logs -f   # 查看日志

数据持久化:Volume 和 Bind Mount

# Volume(Docker管理)
docker volume create mydata
docker run -v mydata:/app/data myapp

# Bind Mount(宿主机目录)
docker run -v /host/path:/container/path myapp

常用技巧

# 清理未使用的容器/镜像/网络
docker system prune -a

# 查看容器资源占用
docker stats

# 容器间网络通信(同一网络自动 DNS 解析)
docker network create mynet
docker run --network mynet --name web webapp
docker run --network mynet --name db database

常见问题

Q: 不加 sudo 运行 docker 命令?

sudo usermod -aG docker $USER
# 退出重新登录生效

Q: 容器退出后数据会丢失吗?

容器文件系统是临时的,重启或删除容器后数据丢失。重要数据务必使用 volume 或 bind mount 持久化。

总结

Docker 是现代 DevOps 的基石技术。掌握 docker run/build/compose 三板斧,就能应对绝大多数日常开发场景。

📤 分享这篇文章