1、单目录挂载
[root@foundation51 ~]# docker run -it --name vm1 -v /tmp/data1:/data1 rhel7 bash
bash-4.2# cd /data1/
bash-4.2# touch file{1..5}
测试:
2、多目录挂载
[root@foundation51 ~]# docker run -it --name vm2 -v /tmp/data1:/data1 -v /tmp/data2:/data2 rhel7 bash
bash-4.2# cd /data1
bash-4.2# touch test{1..5}
bash-4.2# cd /data2
bash-4.2# touch test{1..5}
测试:
3、指定文件挂载
(前提:指定文件dvd.repo必须存在,yum源挂载)
[root@foundation51 ~]# docker run -it --name vm3 -v /tmp/data1:/data1 -v /tmp/data2:/data2 -v /etc/yum.repos.d/dvd.repo:/etc/yum.repos.d/dvd.repo:ro rhel7 bash
bash-4.2# cd /etc/yum.repos.d/
bash-4.2# ls
dvd.repo rhel7.repo
bash-4.2# cat dvd.repo
[dvd]
name=dvd
baseurl=http://172.25.254.250/rhel7.3
gpgcheck=0
bash-4.2# yum repolist
Skipping unreadable repository '///etc/yum.repos.d/rhel7.repo'
dvd | 4.1 kB 00:00:00
(1/2): dvd/group_gz | 136 kB 00:00:00
(2/2): dvd/primary_db | 3.9 MB 00:00:00
repo id repo name status
dvd dvd 4751
repolist: 4751
bash-4.2# yum install -y net-tools
bash-4.2# yum install iputils ##ping命令安装包
bash-4.2# ping 172.25.51.250
4、数据卷容器挂载—数据共享(–volumes-from)
持续更新的数据需要在容器之间共享,最好创建数据卷容器。
数据卷容器,其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的
先创建一个名为datevol的数据卷容器,专门共其他容器挂载。
[root@foundation51 ~]# docker run -it --name datavol -v /tmp/data1:/data1 -v /tmp/data2:/data2 -v /etc/yum.repos.d/dvd.repo:/etc/yum.repos.d/dvd.repo:ro rhel7 bash
注意:两者用法类似
docker run -d ##创建一个将在系统后台运行的容器
docker create ##基于镜像创建容器,但不启用
因此,datevol的数据卷容器,也可这样创建:
[root@foundation51 ~]# docker create --name datavol -v /tmp/data1:/data1 -v /tmp/data2:/data2 -v /etc/yum.repos.d/dvd.repo:/etc/yum.repos.d/dvd.repo:ro rhel7 bash
授权一个容器访问另一个容器的Volume,使用-volumes-from参数来执行docker run
[root@foundation51 ~]# docker run -it --name vm4 --volumes-from datavol rhel7 bash
5、备份数据卷
[root@foundation51 ~]# docker load -i ubuntu.tar
Loaded image: ubuntu:latest
[root@foundation51 ~]# docker images ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 07c86167cdc4 2 years ago 188 MB
[root@foundation51 ~]# cd /tmp/data1
[root@foundation51 data1]# ls
file1 file2 file3 file4 file5 test1 test2 test3 test4 test5
[root@foundation51 data1]# cp /etc/passwd .
[root@foundation51 data1]# docker run --rm --volumes-from datavol -v /tmp/backup:/backup ubuntu tar cf /backup/test.tar /data1