Docker备份与迁移

容器保存为镜像

  通过以下命令将容器保存为镜像:

docker commit [-m="提交的描述信息"] [-a="创建者"] 容器名称|容器ID 生成的镜像名[:标签名]

  1.无目录挂载-容器保存为镜像

docker inspect --format='{{.Mounts}}' 容器名

  

  mycentos2 容器无数据目录挂载,保存为镜像方式如下:

docker commit mycentos2 mycentos_new:1.1

  mycentos2 是容器名称
  mycentos_new 是新的镜像名称
  此镜像的内容就是你当前容器的内容,接下来你可以用此镜像再次运行新的容器

  

  创建并登录容器

docker run -it --name=mxg_mycentos_new mycentos_new:1.1 /bin/bash

  在第5.6章节向 mycentos2 容器中添加了mengxuegu文件,所以新的容器中也有此文件,如下:

  

  2.有目录挂载情况(难点)

  问题: 如果Docker对容器挂载了数据目录, 在将容器保存为镜像时,数据不会被保存到镜像中。
  原因:因为宿主机与容器做了路径映射,再commit一个新的镜像时,该路径下的所有数据都会被抛弃,不会被保存到新镜像中。可通过 docker inspect --  format='{{.Mounts}}' 镜像名 查看是否有目录挂载.
  解决:

    目录挂载方法。先把在宿主机的数据备份在某个目录下,在 docker run 的时候使用-v参数将宿主机上的目录映射到容器里的目标路径中(tomcat是     /usr/local/tomcat/webapps ,mysql是
    var/lib/mysql )
    拷贝方法。先把在宿主机的数据备份在某个目录下,通过拷贝的方法 docker cp 将备份的数据复制进容器里的目标路径中(tomcat是     /usr/local/tomcat/webapps ,mysql是 var/lib/mysql )。

原文地址:https://www.cnblogs.com/116970u/p/10869928.html