2026年Docker常用命令速查表(收藏这一篇就够了)
作者:南璋
前言
去年有一次服务器磁盘满了,查了半天最后发现是Docker镜像和容器占了几十G,一个docker system prune -a直接释放了20G+。从那以后我就养成了定期清理的习惯。
我现在服务器上的服务基本全部容器化了——Jenkins、MySQL、Nginx,还有一些公司的自动化测试平台服务。配合Portainer做可视化管理,日常维护确实省心不少。
下面是我工作中高频使用的命令,没有废话,直接复制能用。
一、镜像操作
# 搜索镜像 docker search nginx # 拉取镜像(建议指定版本) docker pull nginx:1.25 docker pull mysql:8.0 # 查看本地镜像 docker images docker images -a # 包括中间层 # 删除镜像 docker rmi nginx:1.25 docker rmi $(docker images -q) # 删除所有(慎用!) # 镜像导出/导入(内网环境经常用) docker save -o nginx.tar nginx:1.25 docker load -i nginx.tar
踩坑提醒:千万别用latest标签。上次公司有个服务因为latest自动更新挂了,排查了两个小时才发现是新版本不兼容。从那以后所有镜像我都锁死版本号。
二、容器生命周期
# 创建并启动 docker run -d --name my-nginx -p 80:80 nginx # 生产环境常用参数组合(我给公司搭服务基本都用这个模板) docker run -d \ --name mysql \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=your_password \ -v /data/mysql:/var/lib/mysql \ --restart=always \ mysql:8.0
--restart=always 这个一定要加,我之前有次服务器重启忘了手动起容器,导致CI流水线全挂,运维群炸了。
# 查看容器 docker ps docker ps -a # 包括已停止的 # 启停 docker start my-nginx docker stop my-nginx docker restart my-nginx # 删除 docker rm my-nginx docker rm -f my-nginx # 强删运行中的(别在生产环境随便用)
三、进入容器
# 推荐:exec(退出不影响容器) docker exec -it my-nginx /bin/bash docker exec -it my-nginx /bin/sh # alpine镜像没有bash,用sh # 执行单条命令 docker exec my-nginx cat /etc/nginx/nginx.conf # 文件复制(调试配置文件时经常用) docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf docker cp ./nginx.conf my-nginx:/etc/nginx/nginx.conf
我经常改完Nginx配置先copy出来,改好了再copy回去,docker restart一下就生效。比每次都进去vi方便多了。
四、日志与调试
这部分是我用得最多的。线上出问题第一件事就是看日志。
# 查看日志 docker logs my-nginx docker logs -f my-nginx # 实时跟踪(排查问题必用) docker logs --tail 100 my-nginx # 最后100行 docker logs --since 30m my-nginx # 最近30分钟 # 查看容器详情 docker inspect my-nginx # 资源占用 docker stats docker stats --no-stream # 打印一次就退出,适合写脚本监控
有时候容器日志太大,我会配合Goaccess生成可视化的HTML报告:
# 把容器日志导出来分析 docker logs my-nginx > access.log goaccess access.log -o report.html --log-format=COMBINED --real-time-html
Goaccess这块我之前单独写过笔记,配合Nginx日志分析效果很好,能直观看到哪些接口慢、哪些IP访问异常。
五、网络管理
# 创建自定义网络 docker network create my-network # 容器加入网络(可以用容器名互访) docker run -d --name app --network my-network my-app docker run -d --name db --network my-network mysql:8.0 # 查看网络详情 docker network inspect my-network
经验教训:别用容器IP互访,容器重启IP会变,服务就挂了。用自定义网络+容器名是最稳的方案。之前公司有个服务因为hardcode了容器IP,rebuild之后怎么都连不上数据库,查了半天才发现这个问题。
六、数据卷
docker volume create mysql-data docker volume ls docker volume inspect mysql-data docker volume prune # 清理未使用的卷(释放空间)
七、Docker Compose
单个容器还好,服务多了之后compose是刚需:
docker compose up -d # 启动所有服务 docker compose down # 停止并删除 docker compose logs -f # 查看所有服务日志 docker compose restart mysql # 重启单个服务 docker compose ps # 服务状态
我现在搭测试环境基本都是先写docker-compose.yml,一条命令把MySQL、Redis、Nginx全拉起来。比手动一个个run方便太多了。
八、清理磁盘
# 按需清理 docker container prune # 停止的容器 docker image prune -a # 未使用的镜像 # 一键大扫除(释放空间神器) docker system prune -a # 查看磁盘占用 docker system df
我建议在crontab里加一个每月自动清理:
# 每月1号凌晨3点自动清理 0 3 1 * * docker system prune -af >> /var/log/docker-prune.log 2>&1
最后
这些命令基本覆盖了我的日常80%的Docker操作场景。建议大家收藏备用,用的时候Ctrl+F搜关键词就行。
以上就是2026年Docker常用命令速查表(收藏这一篇就够了)的详细内容,更多关于Docker常用命令的资料请关注脚本之家其它相关文章!
