Docker 数据管理

数据卷

数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:

  • 数据卷可以在容器之间共享和重用
  • 对数据卷的修改会立马生效
  • 对数据卷的更新,不会影响镜像
  • 卷会一直存在,直到没有容器使用

创建数据卷

    挂载一个主机目录作为数据卷

#使用 -v 标记可以指定挂载一个本地主机的目录到容器中去
# -d : 以守护进程的形式运行 , --name:给容器起个名字 ,-v:挂载本地目录到容器目录,-p: 映射本机端口到容器端口,-v /var/www/:/var/www:ro :指定为只读,默认权限是读写。
docker run -d --name web -v /var/www/:/var/www -p 81:80 nginx

   挂载一个主机文件作为数据卷

   *注意:如果直接挂载一个文件,很多文件编辑工具,包括  vi  或者  sed --in-place  ,可能会造成文件inode 的改变,从 Docker 1.1 .0起,这会导致报错误信息。所以最简单的办法就直接挂载文件的父目录。

#挂载主机 /etc/nginx/nginx.conf 文件到容器 /etc/nginx/nginx.conf
docker run -d --name=file1  --restart=always -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf  nginx

数据卷容器

如果你有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。数据卷容器,其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的。

   创建一个命名数据卷容器 wpic-data

 docker run -d -v /data --name wpic-data nginx

  在其他容器中使用  --volumes-from  来挂载 dbdata 容器中的数据卷。

docker run -d --volumes-from wpic-data --name db nginx

   数据卷容器的特点:

  •  可以使用多个  --volumes-from  参数来从多个容器挂载多个数据卷
  •  可以从其他已经挂载了数据卷的容器来挂载数据卷
  •  使用  --volumes-from  参数所挂载数据卷的容器自己并不需要保持在运行状态。
  •  删除了挂载的容器,数据卷并不会被自动删除。必须在删除最后一个还挂载着它的容器时使用  docker rm -v  命令来指定同时删除关联的容器。

 

        

posted @ 2018-12-19 17:12  步绍训  阅读(99)  评论(0)    收藏  举报