Docker学习笔记之使用Docker数据卷
Docker数据卷将数据存储到主机而非容器,多个容器需要共享数据时,常常使用数据卷。
1. 为容器设置数据卷(不指定主机目录)
2. 容器与主机之间、容器与容器之间共享数据卷(指定主机目录)
3. 使用Docker数据卷容器
- 为容器设置数据卷(不指定主机目录)
为容器设置数据卷只需要在创建容器时使用 -v 参数指定目录即可。下面示例一个以/data目录设置为数据卷,并存储文件在data数据卷内,并回到主机查看数据卷中的内容。首先创建容器,执行命令创建容器:
sudo docker run -i -t --name example-volume -v /data ubuntu /bin/bash
命令执行成功后会创建容器并进入容器终端bash,切换目录到/data目录,创建test.txt文件,写入内容“Just a test.”,命令执行依次如下:
cd data echo "Just a test." >> test.txt
容器内执行exit命令后推出到主机,使用docker inspect 查看刚才创建的镜像的Source的值。Source的值就是容器的数据卷在主机中的存储位置。
sudo docker inspect example-volume | grep Source
命令结果使用管道查找包含Source关键字的信息,可以看到存储的目录/var/lib/docker/volumes/1381f734a4c3207929784b149137d72cfd71987750c2e74593e81823bcfac2c5/_data。
目录下面有刚才在容器内创建的test.txt文件。使用cat命令查看一下内容:
sudo cat /var/lib/docker/volumes/1381f734a4c3207929784b149137d72cfd71987750c2e74593e81823bcfac2c5/_data/test.txt
所以,在容器内设置的数据卷其实对应于docker管理的一个主机存储目录。
- 容器与主机之间、容器与容器之间共享数据卷(指定主机目录)
容器与主机共享数据卷只需要在创建容器时指定主机目录与容器目录之间的共享就可以了,格式是使用 -v 参数,“-v 主机目录:容器目录“ 选项指定具体的共享目录。下面示例一个主机~/Document目录与容器/Document目录的数据卷共享。执行命令创建容器:
sudo docker run -i -t --name hello-volume1 -v ~/Document:/Document ubuntu /bin/bash
命令执行成功后会进入容器终端,输入内容“Just a test.”到文件/Document/test.txt文件并退出回到主机终端
在主机的~/Document目录下可以看到test.txt文件,使用cat命令查看其内容。
cat ~/Document/test.txt
下面创建第二个容器,共享主机的~/Document目录,执行命令:
sudo docker run -i -t --name hello-volume2 -v ~/Document:/Document ubuntu /bin/bash
命令执行成功后会进入容器终端,使用cat命令查看共享数据卷下的test.txt文件,执行命令:
cat /Document/test.txt
从执行结果来看,前面第一个容器hello-volume1创建的文件test.txt也出现在容器hello-volume2中。其实若在两个容器中任何一个容器中的共享目录/Document或者主机的~/Document目录下创建文件,它们三者都可以使用,这就是数据卷的功能,可以实现多个容器共享数据。
- 使用Docker数据卷容器
数据卷容器是设置数据卷的容器,专门提供数据卷供其它容器共享。从普通容器连接到数据卷容器后,即可访问数据卷容器内的数据卷目录。下面创建一个名为data-volume的数据卷容器,执行命令:
sudo docker run -i -t --name data-volume -v ~/Document:/Document ubuntu /bin/bash
然后输入测试内容到容器的/Document目录下,输入命令:
echo "data-volume" >> /Document/data
文件写入后,这时候需要把数据卷容器后台运行,依次按Ctrl+P、Ctrl+Q,在不停止容器的前提下推出Bash Shell。
这时,创建普通容器,连接到刚刚创建的data-volume数据卷容器,运行Bash Shell,输出/Document目录下的data文件内容,执行命令:
sudo docker run -i -t --name hello --volumes-from data-volume ubuntu /bin/bash
命令执行成功后会进入容器,执行cat命令查看数据卷容器的内容:
cat /Document/data
用于连接数据卷容器的选项格式为 --volumes-from <数据卷容器> ,注意确保连接的数据卷容器是启动运行状态。另外,数据卷容器也可以被多个普通容器连接上去。
转载于:https://www.cnblogs.com/quanbisen/p/11380275.html
- 点赞
- 收藏
- 分享
- 文章举报
- DirectSound学习笔记:使用WAV数据
- WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
- iOS学习笔记2-使用Audio Queues录音,取得实时PCM数据
- SilverLight学习笔记--Silverlight中INotifyPropertyChanged 接口在数据绑定中的使用
- Chap 4 学习笔记-使用C#存储变量数据
- OpenLayers学习笔记8——使用servlet从mysql获取数据并标注
- 【学习笔记】day2数据存储和界面展现第一天 08_使用api获取内部存储空间路径09_files文件夹与cache文件夹
- WCF学习笔记(二)使用Name等属性和数据契约
- 微软企业库4.1学习笔记(三十二)数据访问模块 在应用中使用数据访问模块
- [转]WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
- sqlite学习笔记9:C语言中使用sqlite之插入数据
- Docker学习笔记(3)-- 如何使用Dockerfile构建镜像
- web前台工作笔记(时间戳、js中clone的使用、js中动态填充数据注意事项、前台查错方法的学习)
- [学习笔记]使用java读取Excel表格中的数据
- 使用 Bulk Copy 将大量数据复制到数据库..............学习笔记
- oracle 学习笔记(3)--使用子查询更新数据
- SilverLight学习笔记--关于使用IValueConvert对绑定数据的格式化操作
- Hadoop学习笔记(七):使用distcp并行拷贝大数据文件
- FreeRTOS学习笔记——任务间使用队列同步数据
- SMP3.0学习笔记之十二 使用AppBuilder读取OData服务的数据