《一些常用的Docker指令》的特色图片

一些常用的Docker指令

在Debian服务器上管理Docker的常用指令,涵盖容器、镜像、Compose、清理等场景。

整理日常使用频率最高的 Docker 命令,方便随时查阅复制。

容器管理

运行容器

# 基础运行
docker run -d --name <容器名> <镜像>:<tag>

# 常用参数组合
docker run -d --name <容器名> \
  -p 8080:80 \                    # 端口映射 主机:容器
  -v /host/path:/container/path \ # 挂载卷
  -e KEY=VALUE \                  # 环境变量
  --restart unless-stopped \      # 自动重启
  <镜像>:<tag>

容器生命周期

docker start <容器名>      # 启动已停止的容器
docker stop <容器名>       # 停止容器
docker restart <容器名>    # 重启容器
docker rm <容器名>         # 删除已停止的容器
docker rm -f <容器名>      # 强制删除(即使运行中)

查看容器

docker ps                  # 运行中的容器
docker ps -a               # 所有容器(含已停止)
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"  # 表格视图

进入容器

docker exec -it <容器名> bash     # 进入容器 shell
docker exec -it <容器名> sh       # alpine 等无 bash 的镜像
docker exec <容器名> <命令>       # 执行单条命令不进入

查看日志

docker logs <容器名>              # 查看日志
docker logs -f <容器名>           # 实时跟踪(Ctrl+C 退出)
docker logs --tail 100 <容器名>   # 最近 100 行
docker logs --since 1h <容器名>   # 最近 1 小时

容器信息

docker inspect <容器名>           # 详细配置(JSON)
docker stats                     # 实时资源占用
docker stats --no-stream         # 单次快照
docker top <容器名>               # 容器内进程
docker port <容器名>              # 端口映射

文件拷贝

docker cp <容器名>:/path/file ./   # 容器 → 主机
docker cp ./file <容器名>:/path/   # 主机 → 容器

镜像管理

docker images                            # 列出本地镜像
docker pull <镜像>:<tag>                 # 拉取镜像
docker rmi <镜像>:<tag>                  # 删除镜像
docker rmi $(docker images -q)           # 删除所有镜像(⚠️ 慎用)
docker tag <源镜像> <新镜像>:<tag>       # 打标签
docker build -t <镜像名>:<tag> .         # 构建镜像
docker push <镜像名>:<tag>               # 推送到仓库
docker save -o image.tar <镜像>:<tag>    # 导出镜像
docker load -i image.tar                 # 导入镜像
docker history <镜像>:<tag>              # 镜像层历史

Docker Compose

基础操作

docker compose up -d            # 启动(后台)
docker compose down             # 停止并删除容器、网络
docker compose down -v          # 同时删除卷(⚠️ 数据会丢失)
docker compose start            # 启动已存在的容器
docker compose stop             # 停止容器(不删除)
docker compose restart          # 重启所有服务
docker compose restart <服务名> # 重启指定服务

查看状态

docker compose ps               # 查看服务状态
docker compose ps -a            # 所有服务(含已停止)
docker compose logs -f          # 实时日志
docker compose logs <服务名>    # 指定服务日志
docker compose top              # 进程信息

执行命令

docker compose exec <服务名> bash      # 进入服务容器
docker compose exec <服务名> <命令>    # 执行单条命令
docker compose run <服务名> <命令>     # 在新容器中执行(不依赖已有容器)

构建与更新

docker compose build             # 构建镜像
docker compose build --no-cache  # 无缓存构建
docker compose pull              # 拉取最新镜像
docker compose up -d --build     # 重新构建并启动

网络管理

docker network ls                # 列出网络
docker network inspect <网络名>  # 查看网络详情
docker network create <网络名>   # 创建网络
docker network rm <网络名>       # 删除网络
docker network prune -f          # 清理未使用的网络

卷管理

docker volume ls                 # 列出卷
docker volume inspect <卷名>     # 查看卷详情
docker volume create <卷名>      # 创建卷
docker volume rm <卷名>          # 删除卷
docker volume prune -f           # 清理未使用的卷

系统信息

docker info                      # Docker 系统信息
docker version                   # 版本信息
docker system df                 # 磁盘占用概览
docker system df -v              # 详细磁盘占用

清理与维护

资源清理

docker system prune -f                  # 清理未使用的容器、网络、悬空镜像
docker system prune -af --volumes       # 彻底清理所有未使用资源(⚠️ 慎用)
docker image prune -f                   # 清理悬空镜像
docker image prune -af                  # 清理所有未使用镜像
docker container prune -f               # 清理已停止容器
docker volume prune -f                  # 清理未使用卷
docker network prune -f                 # 清理未使用网络

清理指定项目

# 以 MySQL 项目为例
cd ~/<项目目录>
docker compose down -v                  # 停止并删除卷

# 确认清理结果
docker ps -a | grep mysql               # 确认容器已删除
docker volume ls | grep mysql           # 确认卷已删除
docker images | grep mysql              # 确认镜像状态

# 如需删除镜像
docker rmi mysql:<tag>

# 删除项目目录
rm -rf ~/<项目目录>

定时自动清理

# crontab 每周清理一次
0 3 * * * docker system prune -f

终极卸载

彻底移除 Docker:

# 删除所有资源
docker system prune -af --volumes

# 卸载 Docker(Debian/Ubuntu)
sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo apt-get autoremove
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

# 删除 Docker 用户组(可选)
sudo groupdel docker