Docker储存,容器数据共享(Docker学习笔记二)

 容器储存

 Docker 储存资源两种方式
 
 1--storage diver: 管理镜像层和容器层,数据存放在最上面的容器层
 2--Data volume (数据容量,Host中的目录) :1:bind mount   2:docker manage volume

 
 bind mount (将本地目录mount到容器)  
 例: docker run  -d -p 80:80 -v ~/htdocs:/usr/local/apache2/htdocs httpd
                       //-v : 
  
 
 docker manage volume(docker已经设置好的目录即 /var/lib/docker/volumes/随即字段/_data ) 
 例: docker run -d -p 80:80 -v /usr/local/apache2/htdocs httpd
                              //-v    无需指定Host目录



设置mount后:
     bind mount :中的文件会隐藏,只有Host中的文件                                        
   docker manage volume: mount会在 run 时才生成,而且将contain 文件copy Host目录下

 
  
 
 

容器与Host或容器数据共享

   容器与 host 共享数据:
bind mount: 将想过共享的数据 bind  指定 目录mount 即可
docker managed volume :因为 voume 只有再run时才生成,所以将要共享数据,copy 到  volume 即可

   容器与容器之间共享数据:
 
1: bind同一个 volume 即可
  例: docker run --name web1 -d -p 80 -v ~/htdocs:/usr/local/apache2/htdocs httpd
       docker run --name web2 -d -p 80 -v ~/htdocs:/usr/local/apache2/htdocs httpd
  //  都绑定到 /htdocs 这个目录,所以共享数据

warning: docker managed volume 每个容器 mount 都不一样,所以无法共享


2: volume container   (访问同一个container储存目录 )   (代替Host的mount)
  例: docker create --name vc_data -v ~/htdocs:/usr/local/apache2/htdocs
                                   -v /other/useful/tools busybox
      docker run --name web1 -d -p 80 --volumes-from vc_data  
      docker run --name web1 -d -p 80 --volumes-from vc_data
  //  busybox作为base iamge 尽量小点,  web1,web2 都可以访问同两个目录   
  //  docker inspect web1,web2  里面 "Mount"和vc_data相同

3: 数据完全放在 container volume 中 (共享数据打包image ,通过docker manage volume 共享 )
 
 例: ① FROM busybox:latest   (Dockerfile)
     ADD  htdocs  /usr/local/apache2/htdocs  //Host文件 copy 容器目录
     VOLUME  /usr/local/apache2/htdocs       //将此目录文件 copy Host目录 作为共享
  ②  docker build -t   datapacked     //打包镜像,image有add 的文件
  ? docker create --name vc_data datapacked  //创造容器 vc_data ,作为 volume中间站
  ④   docker run -d -p 80:80 --volumes-from vc_data httpd  //访问 vc_data的volume, 
 
 

 备份,恢复,迁移,销毁

 

备份:
     docker run -d -p 5000:5000 -v /myregistry:/var/lib/regitry regitry:2
  //容器的数据备份,即对指定Host mount 备份

恢复:
   将备份数据放在,指定Host mount即可

迁移:  
        docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:latest
      //将Host mount:指定迁移位置即可

摧毁: 可以删除 container volume Host可以删除mount 

  docker rm container_naem -v   //删除容器,及其 volume
    

   

 

你可能感兴趣的:(Docker)