
昨晚忘记ssh密码,然后重新改了密码重启了服务器。因为我使用的是docker,docker restart无法启动完整的4个容器(nginx、mysql、前台、后端服务),然后发现了是因为资源不够的原因。
这个是我服务器的配置(比较rubbish)
修改密码重启服务器后,解决步骤、详情:
第一步:docker重启
systemctl restart docker
第二步:查看docker容器
docker ps
// 发现docker没有在跑的容器,然后运行
docker ps -a
// 看容器id或者name,docker重启容器
docker restart xxx
// xxx是指容器id或者容器name,我这里则是docker restart mysql
第三步:重启后查看docker运行
[root@centos /]# docker ps
CONTAINER ID IMAGE xxx
161xxxxxxx blog-jdk8-spring-boot-jar xxx
a1221cxxxx blog xxx
11cxzxxxxx nginx xxx
[root@centos /]# docker ps -a
CONTAINER ID IMAGE STATUS
xxxxxxxxxx mysql Exited (1) 14 seconds ago
xxxxxxxxxx blog-jdk8-spring-boot-jar Up 47 minutes
a1221cxxxx blog Up 47 minutes
11cxzxxxxx nginx Up 47 minutes
第四步:排除所有问题,指向内存不够原因
free -m
或者
free
// 查看服务器内存MB显示,-m就是MB显示大小
然后发现free可用空间没有了,所以docker容器启动不起来了,所以exited,因此增加Swap虚拟内存分区,扩大容量。
最重要的!!!
第五步:增加Swap分区
// 创建大小为1024或者512M的交换文件:
// count可以修改,创建多大填多大,bs为单位
dd if=/dev/zero of=/swapfile bs=1M count=1024
// 使用mkswap命令来设置交换文件
mkswap /swapfile1
// 启用交换分区
swapon /swapfile1
// 写入/etc/fstab,以便在docker或者服务器重启时不被删除
/swapfile1 swap swap defaults 0 0
// 然后再输入free或者free -m查看是否添加
[root@centos /]# free
total used free shared buff/cache available
Mem: 2046684 1613492 77932 844 355260 275376
Swap: 524284 0 524284
至此,创建好了Swap分区,然后重新docker restart mysql(或者docker restart你们自己的容器,然后就成功了)
[root@centos /]# docker restart mysql
mysql
[root@VM-12-15-centos /]# free
total used free shared buff/cache available
Mem: 2046684 1830204 73684 400 142796 64976
Swap: 524284 231288 292996
// 只要发现Swap的used被用了,说明启效果了
如果大家遇到服务器重启后docker无法全部启动容器,可以考虑一下资源不够这方面的原因,相信自己写的配置没问题!!!
个人纯原创的公众号:安哥说前端,会分享一些自己在项目上用到的组件、封装、大前端或者业务逻辑知识等,希望大家能关注,谢谢!