docker数据卷
1、创建数据容器
常见的使用场景是使用纯数据容器来持久化数据库、配置文件或者数据文件等。官方的文档上有详细的解释。例如:
$ docker run --name dbdata postgres echo "Data-only container for postgres"
该命令将会创建一个已经包含在Dockerfile里定义过Volume的postgres镜像,运行echo命令然后退出。当我们运行docker ps命令时,echo可以帮助我们识别某镜像的用途。我们可以用-volumes-from命令来识别其它容器的Volume:
$ docker run -d --volumes-from dbdata --name db1 postgres
使用数据容器的两个注意点:
不要运行数据容器,这纯粹是在浪费资源。
不要为了数据容器而使用“最小的镜像”,如busybox或scratch,只使用数据库镜像本身就可以了。你已经拥有该镜像,所以并不需要占用额外的空间。
授权访问数据卷
如果要授权一个容器访问另一个容器的Volume,我们可以使用-volumes-from参数来执行docker run
备份数据卷到物理机器
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,这样就到物理机的当前目录了
2、在容器内创建一个数据卷
在用docker run命令的时候,使用-v标记可以在容器内创建一个数据卷。多次使用-v标记可以创建多个数据卷。
下面使用training/webapp镜像创建一个Web容器,并创建一个数据卷挂载到容器的/we-bapp目录:
$ sudo docker run -d -P --name web -v /webapp training/webapp
注意 -P是允许外部访问容器需要暴露的端口。
查看该数据卷在主机上的存储目录
docker inspect -f {{.Volumes}} your-container-name
这种应该是在主机/var/lib/docker目录底下随机命名的一个目录去挂载,如果是在mac上,则该目录在visualbox上面。
3、挂载本机目录(这个是在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这样就可以记录在容器输入过的命令历史了。
参考
深入理解Docker Volume(一)
深入理解Docker Volume(二)
关键字:docker
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!