主题
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 一键清理。
八、排错流程
docker ps -a看容器状态(Exited?)docker logs --tail 50 myapp看日志- 启不来用
docker inspect myapp看详细配置