docker数据卷

一、建立数据容器

常见的使用场景是使用纯数据容器来持久化数据库、配置文件或者数据文件等。官方的文档上有详细的解释。例如:web

$ docker run --name dbdata postgres echo "Data-only container for postgres"

该命令将会建立一个已经包含在Dockerfile里定义过Volume的postgres镜像,运行echo命令而后退出。当咱们运行docker ps命令时,echo能够帮助咱们识别某镜像的用途。咱们能够用-volumes-from命令来识别其它容器的Volume:docker

$ docker run -d --volumes-from dbdata --name db1 postgres

使用数据容器的两个注意点:shell

  • 不要运行数据容器,这纯粹是在浪费资源。数据库

  • 不要为了数据容器而使用“最小的镜像”,如busybox或scratch,只使用数据库镜像自己就能够了。你已经拥有该镜像,因此并不须要占用额外的空间。ubuntu

受权访问数据卷

若是要受权一个容器访问另外一个容器的Volume,咱们可使用-volumes-from参数来执行docker runbash

备份数据卷到物理机器

#sudo docker run --volumes-from dbdata -v $(pwd):/backup--name worker ubuntu tar cvf /backup/backup.tar /dbdata

首先利用ubuntu镜像建立一个容器worker.使用—volumes-from dbdata参数来让容器挂载dbdata容器的数据卷;使用 –v $(pwd):/backup参数来挂载本机的当前目录到worker容器的/backup目录
Woker容器启动后,执行tar命令将/dbdata压缩到/backup/backup.tar,这样就到物理机的当前目录了app


二、在容器内建立一个数据卷

在用docker run命令的时候,使用-v标记能够在容器内建立一个数据卷。屡次使用-v标记能够建立多个数据卷。
下面使用training/webapp镜像建立一个Web容器,并建立一个数据卷挂载到容器的/we-bapp目录:
$ sudo docker run -d -P --name web -v /webapp training/webapp
注意 -P是容许外部访问容器须要暴露的端口。webapp

查看该数据卷在主机上的存储目录post

docker inspect -f {{.Volumes}} your-container-name

这种应该是在主机/var/lib/docker目录底下随机命名的一个目录去挂载,若是是在mac上,则该目录在visualbox上面。code

三、挂载本机目录(这个是在dockerfile中VOLUME没法作到的)

使用-v标记也能够指定挂载一个本地的已有目录到容器中去做为数据卷:
$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp
上面的命令加载主机的/src/webapp目录到容器的/opt/webapp目录

挂载本机文件

挂载一个本地主机文件做为数据卷-v标记也能够从主机挂载单个文件到容器中做为数据卷:
$ sudo docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash这样就能够记录在容器输入过的命令历史了。

参考

相关文章
相关标签/搜索