备份
[https://www.cnblogs.com/OneDirection/articles/9797833.html]
因为服务器主要是通过docker容器运行微服务,所以主要备份docker镜像
docker 退出状态码
[https://zhuanlan.zhihu.com/p/565530287]
- exited(0):退出代码0表示特定容器没有附加前台进程,正常退出
- exited(255)/exited(-1):异常退出
打包容器
docker镜像的挂载目录不能被打包进镜像中
docker ps
docker commit 容器id 名称:tag
docker ps -a
docker export 容器id > xxx.tar
数据持久化
容器在运行期间产生的数据是不会写在镜像里面的,重新用此镜像启动新的容器就会初始化镜像,会加一个全新的读写入层来保存数据。
如果想做到数据持久化,Docker提供数据卷(Data volume)或者数据容器卷来解决问题,另外还可以通过commit提交一个新的镜像来保存产生的数据。
恢复
恢复容器
docker start 容器id //可以保留启动时的参数,如-p端口映射,-v目录挂载等
启动后状态为unhealthy,这时用:
docker restart 容器id
Docker认为容器的ENTRYPOINT运行起来了就表示容器启动了,容器的ENTRYPOINT启动的进程没有退出就表示容器是可用的,可实际情况下这个判断方法并不是那么靠谱。
Docker在v1.12版本之后增加了healthcheck功能,该功能可以自定义容器健康状态的检测标准,通过healthcheck自定义一个检测容器是否可用的标准,这个弥补了Docker默认的判断方法的不精准的不足。
从镜像中恢复容器
[https://zhuanlan.zhihu.com/p/363409592]
docker import - 名称:tag < xxx.tar
从docker 的Volumes恢复数据
[https://www.jb51.net/article/212898.htm]
[https://www.cnblogs.com/mydba-j/articles/9797931.html]
Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume)。数据卷可以用来存储Docker应用的数据,也可以用来在Docker容器间进行数据共享。
数据卷呈现给Docker容器的形式就是一个目录,支持多个容器间共享,修改也不会影响镜像。使用Docker的数据卷,类似在系统中使用 mount 挂载一个文件系统。
数据卷目录在 /var/lib/docker/volumes 下,每个容器都会在该目录下有一个文件夹,如果容器还存在的话,我们可以使用 docker inspect 容器ID 去查看 数据卷位置.