Skip to content

Docker 速查

概念 + 日常命令 + Compose 编排,合一。


一、核心概念

概念解释
镜像(Image)应用只读模板,含环境+代码+依赖
容器(Container)镜像的运行实例,隔离进程空间
Dockerfile描述如何构建镜像
Docker Compose编排多容器(yaml 描述,一条命令启停)
数据卷(Volume)持久化存储,容器删了数据在
仓库(Registry)镜像存储分发(Docker Hub / 私有)

容器 vs 虚拟机:容器共享 Host 内核,仅隔离进程/网络/文件,MB 级、秒启动;虚拟机需 Guest OS、GB 级。


二、安装

bash
# Rocky / AlmaLinux / RHEL 8+(推荐,CentOS 7 已于 2024-06 EOL)
dnf install -y dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl start docker
systemctl enable docker

# Ubuntu / Debian
apt update && apt install -y docker.io docker-compose-plugin

# 验证
docker --version
docker compose version      # 新版:docker compose(v2,带空格,是 plugin,官方主流)
# 老版独立二进制(已过时):docker-compose --version

关键区分

  • docker compose(空格,v2 插件)= 2022 年后的主流,随 docker 一起装
  • docker-compose(横杠,v1 独立包)= Python 写的老版本,已停止维护 2023 年后不再建议
  • 两者命令几乎一致:v2 只需要把 docker-compose xxx 改成 docker compose xxx
  • 网上 80% 老教程写的还是 v1,照抄前先想一下有没有横杠

三、镜像操作

操作命令
搜索docker search nginx
拉取docker pull nginx:latest
查看docker images
删除docker rmi nginx
导出docker save -o nginx.tar nginx:latest
导入docker load -i nginx.tar

四、容器操作

bash
# 启动(最常用)
docker run -d --name myapp -p 8080:80 nginx

# 查看
docker ps                  # 运行中
docker ps -a               # 全部

# 启停
docker stop myapp
docker start myapp
docker restart myapp

# 日志(排错首选)
docker logs myapp
docker logs -f myapp       # 实时
docker logs --tail 100 myapp

# 进入容器
docker exec -it myapp sh   # Alpine
docker exec -it myapp bash # 其他

# 拷贝
docker cp file.txt myapp:/path/
docker cp myapp:/path/file.txt ./

# 删除
docker rm myapp
docker rm -f myapp         # 强制

五、数据卷

bash
# 挂载宿主机目录
docker run -d -v /host/data:/container/data nginx

# 管理
docker volume ls
docker volume prune        # 清理未使用

六、Compose 编排

一个 docker-compose.yml 描述多服务,一条命令全启停。

yaml
services:
  web:
    image: myapp:latest
    ports:
      - "8080:8080"
    volumes:
      - ./data:/opt/data
    depends_on:
      - pgsql
  pgsql:
    image: postgres:15
  redis:
    image: redis:7

常用命令

bash
# 新版 v2(空格,当前主流)
docker compose up -d                       # 后台启动
docker compose up -d --force-recreate      # 修改compose文件后强制重建(不改配置别加)
docker compose down                        # 停止清理容器/网络(-v 删卷!)
docker compose down -v                     # 停止+删数据卷(生产勿用!会丢库)
docker compose ps                          # 状态
docker compose logs -f --tail 200 web      # 某服务日志(末尾200行+实时)
docker compose restart web                 # 只重启一个服务

# 老版 v1(横杠,已废弃,列在这里只为对照老脚本)
# docker-compose up -d
# docker-compose down

多文件组合(MaxKB 场景)

bash
# v2 新版(无横杠)
docker compose -f docker-compose.yml \
              -f docker-compose-pgsql.yml \
              -f docker-compose-redis.yml \
              up -d --force-recreate

# v1 老版对照(横杠):docker-compose -f xxx -f yyy up -d

七、清理维护

bash
docker system df              # 磁盘占用

# 一键清理(停止的容器 + 悬空镜像 + 缓存 + 未用网络)
docker system prune -a

# 分项清理
docker container prune
docker image prune
docker builder prune
docker network prune

# 批量停止
docker stop $(docker ps -aq)

Windows 用户可双击 快捷脚本/清理容器资源.bat 一键清理。


八、排错流程

  1. docker ps -a 看容器状态(Exited?)
  2. docker logs --tail 50 myapp 看日志
  3. 启不来用 docker inspect myapp 看详细配置

© 2026 开发速查