Docker 服务器运维速查手册
Docker 服务器运维速查手册
适用:
- 阿里云服务器
- Docker部署项目
- Spring Boot
- Vue/Next
- MySQL
- Redis
- Nginx
1. 我要查看服务器运行了哪些服务
查看正在运行的容器
docker ps
用途:
查看当前线上运行:
例如:
nginx
next-app
ruoyi-backend
ruoyi-mysql
ruoyi-redis
查看所有容器(包括停止的)
docker ps -a
用途:
找旧项目。
例如:
old-backend Exited
test-mysql Exited
这些可能是历史残留。
2. 我要判断某个服务是否正常
例如:
后端接口打不开。
第一步:看容器是否运行
docker ps
正常:
ruoyi-backend Up 3 months
异常:
没有这个容器。
第二步:看日志
docker logs -f ruoyi-backend
常见问题:
数据库连接失败:
Connection refused
端口冲突:
Port already in use
3. 我要重启一个服务
例如:
修改了后端配置。
重启
docker restart ruoyi-backend
适用:
- Spring Boot
- Nginx
- Redis
4. 我要停止一个不用的服务
例如:
旧测试环境不用了。
停止
docker stop ruoyi-backend
注意:
只是停止。
数据还在。
5. 我要删除一个不用的服务(重点)
例如:
删除旧若依:
ruoyi-nginx
ruoyi-backend
ruoyi-redis
ruoyi-mysql
第一步:确认容器
docker ps -a
第二步:查看有没有数据挂载(非常重要)
执行:
docker inspect 容器名 | grep Source
例如:
docker inspect ruoyi-mysql | grep Source
看到:
Source:
/home/admin/ruoyi-docker/mysql/data
说明:
数据库真实文件在:
/home/admin/ruoyi-docker/mysql/data
⚠️ 删除容器不会删除这里。
第三步:删除容器
docker rm 容器名
例如:
docker rm ruoyi-mysql
第四步:删除数据文件(如果确定不要)
先看大小:
du -sh /home/admin/ruoyi-docker/mysql/data
确认后:
删除:
rm -rf /home/admin/ruoyi-docker/mysql/data
或者整个项目:
rm -rf /home/admin/ruoyi-docker
⚠️ 这一步才是真正删除数据库。
6. 我要删除旧项目完整流程(推荐)
例如删除旧若依。
1. 停止
docker stop \
ruoyi-nginx \
ruoyi-backend \
ruoyi-redis \
ruoyi-mysql
2. 查看数据位置
数据库:
docker inspect ruoyi-mysql | grep Source
Redis:
docker inspect ruoyi-redis | grep Source
3. 删除容器
docker rm \
ruoyi-nginx \
ruoyi-backend \
ruoyi-redis \
ruoyi-mysql
4. 删除项目目录
例如:
rm -rf /home/admin/ruoyi-docker
7. 我要部署新项目
进入项目:
cd /home/admin/c-cleaner
启动:
docker compose up -d
查看:
docker compose ps
8. 我要更新代码重新部署
例如:
Spring Boot代码更新。
执行:
docker compose up -d --build
含义:
重新构建镜像。
重新创建容器。
9. 我要查看服务器内存是不是被Docker占满
执行:
docker stats
例如:
mysql 2GB
backend 1GB
redis 100MB
找到占资源大的服务。
10. 我要查看Docker占用了多少磁盘
执行:
docker system df
例如:
Images 20GB
Containers 5GB
Volumes 30GB
决定清理哪里。
11. 我要清理Docker垃圾
查看镜像
docker images
用途:
查看旧版本镜像。
例如:
backend:v1
backend:v2
backend:v3
只使用:
backend:v3
删除旧:
docker rmi backend:v1
清理停止容器
docker container prune
12. 我要查看数据库在哪里
MySQL:
docker inspect mysql | grep Source
可能:
/home/admin/mysql/data
这个目录:
就是数据库文件。
备份:
cp -r /home/admin/mysql/data /backup/
删除:
rm -rf /home/admin/mysql/data
13. Docker本身挂了怎么办
查看Docker服务
sudo systemctl status docker
正常:
active (running)
如果:
inactive
启动:
sudo systemctl start docker
如果:
failed
查看:
sudo journalctl -u docker -n 100
14. 常见任务对应命令
| 我要做什么 | 命令 |
|---|---|
| 看有哪些服务 | docker ps |
| 找旧服务 | docker ps -a |
| 看报错 | docker logs -f xxx |
| 重启服务 | docker restart xxx |
| 停止服务 | docker stop xxx |
| 删除服务 | docker rm xxx |
| 查数据位置 | docker inspect xxx | grep Source |
| 删除数据库文件 | rm -rf 数据目录 |
| 启动项目 | docker compose up -d |
| 重新部署 | docker compose up -d --build |
| 看内存 | docker stats |
| 看磁盘 | docker system df |
| 看镜像 | docker images |
| Docker挂了 | systemctl status docker |
最重要的安全原则
删除顺序:
永远:
确认容器
↓
查看挂载目录
↓
备份(重要)
↓
删除容器
↓
删除数据目录
不要直接:
rm -rf /home/admin/xxx
否则可能:
- 删除数据库
- 删除上传文件
- 删除配置
进入myslq:sudo docker exec -it c-cleaner-mysql mysql -u root -p
删除旧库:
DROP DATABASE `c-cleaner`;
创建新库
CREATE DATABASE `c-cleaner`
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
退出
exit
导入:
sudo docker exec -i c-cleaner-mysql \
mysql -uroot -p你的MySQL密码 \
--default-character-set=utf8mb4 \
c-cleaner < /home/admin/c_cleaner.sql
导入完成检查:
sudo docker exec -it c-cleaner-mysql mysql -uroot -p
USE `c-cleaner`;
select nick_name from sys_user limit 10;