整理日常使用频率最高的 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
