linux系统docker部署项目,内存爆满问题
docker更换默认存储路径以及迁移历史镜像和容器到新的路径下
先整理下相关命令
docker相关命令
###################### docker服务启动,停止相关命令 ######################
1.docker守护进程重启
systemctl daemon-reload
2.docker服务启动命令
systemctl start docker
3.docker服务重启命令
systemctl restart docker
4.docker服务关闭
systemctl stop docker
#################### docker服务使用相关命令 ####################
5.查看docker镜像
docker images
6.查看docker容器
docker ps -a
7.查看docker基本信息(版本信息,镜像/容器 dir 存储路径)
docker info
8.查看默认存储路径
docker info |grep "Docker Root Dir"
9.查看Docker的磁盘使用情况
docker system df
linux相关命令
1.linux服务器重启
reboot
2.linux服务器关机
halt
3.计算机将于10分钟后关闭,且会显示在登录用户的当前屏幕中
shutdown -h 10
4.计算机会立刻关机
shutdown -h now
5.计算机会在这个时刻关机
shutdown -h 22:22
6.计算机会立刻重启
shutdown -r now
7.计算机会将于10分钟后重启
shutdown -r +10
8.计算机会立刻关机
shutdown -h now
第一步-查看docker默认路径命令
看默认存储路径
docker info |grep “Docker Root Dir”
查看docker默认路径的内存情况
df -h /var/lib/docker
第二步-停止docker服务
由于我这边docker服务会自动重启,导致无法停止docker服务,所以我这边直接重启linux服务器
停止docker服务
systemctl stop docker
重启linux服务器
reboot
第三步-拷贝之前的镜像、容器文件到新的存储目录下
docker原先默认的地址是:/var/lib/docker
我更改的新地址是:/datakuo/lib/docker
拷贝/var/lib/docker目录下的所有文件到/datakuo/lib/docker目录下
cp -a /var/lib/docker/* /datakuo/lib/docker/
cp参数说明:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
此处记录一个问题:
拷贝docker历史镜像容器文件时,一定要同时把访问权限也要复制过去,否则docker运行后,无法启动mysql的容器。
(我这边之前使用 cp -r 命令复制,文件复制过去了,但是mysql容器一直无法运行,最后看到一篇博客,说是权限问题,于是又重新复制了下,最后奇迹般的成功了,不容易啊)
第四步-更改配置文件
1.进入docker配置文件
vim /etc/docker/daemon.json
2.增加如下配置:
{
"graph":"/datakuo/lib/docker"
}
3.添加后按Esc,并输入如下命令保存并退出
:wq
4.重新加载配置
systemctl daemon-reload
5.重新启动docker
systemctl restart docker
第五步-查看docker镜像、容器是否正常
1.启动docker后,查看镜像是否缺失
docker images
2.查看容器是否缺失
docker ps -a
3.启动mysql容器、redis容器
docker start 容器id
4.查看容器日志
docker logs 容器id
第六步-查看docker默认路径是否更换为新路径,并查看内存情况
docker info |grep "Docker Root Dir"
如此成功后,docker迁移就完成了,【在此记录,防止忘记】
额外记录下项目连接mysql数据库无法连接问题。报错信息如下:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed
最简单的解决方法是在连接后面添加 allowPublicKeyRetrieval=true
参考链接:
https://blog.csdn.net/u013360850/article/details/80373604 ——项目无法连接mysql问题报错解决
https://www.runoob.com/linux/linux-comm-cp.html——linux命令-菜鸟教程
https://blog.csdn.net/freeking101/article/details/68939059——linux 的 ip 命令 和 ifconfig 命令
https://www.cnblogs.com/zjz20/p/14087160.html——docker修改默认存储路径,并迁移之前的镜像数据
https://www.runoob.com/docker/docker-command-manual.html——docker菜鸟教程
https://www.php.cn/linux-417358.html——linux服务器重启命令是什么
http://mtw.so/62zNim——Linux下查看CPU型号,内存大小,硬盘空间的命令(详解)
https://www.jianshu.com/p/e6c82e44d5ed——查看目录和文件大小: du -sh
https://blog.csdn.net/weixin_34238633/article/details/92512628——Linux查看服务器总内存和总硬盘大小