Docker資料卷管理
阿新 • • 發佈:2018-11-19
1、單目錄掛載
[[email protected] ~]# docker run -it --name vm1 -v /tmp/data1:/data1 rhel7 bash
bash-4.2# cd /data1/
bash-4.2# touch file{1..5}
測試:
2、多目錄掛載
[[email protected] ~]# 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源掛載)
[[email protected] ~]# 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的資料卷容器,專門共其他容器掛載。
[[email protected] ~]# 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的資料卷容器,也可這樣建立:
[[email protected] ~]# 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
[[email protected] ~]# docker run -it --name vm4 --volumes-from datavol rhel7 bash
5、備份資料卷
[[email protected] ~]# docker load -i ubuntu.tar
Loaded image: ubuntu:latest
[[email protected] ~]# docker images ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 07c86167cdc4 2 years ago 188 MB
[[email protected] ~]# cd /tmp/data1
[[email protected] data1]# ls
file1 file2 file3 file4 file5 test1 test2 test3 test4 test5
[[email protected] data1]# cp /etc/passwd .
[[email protected] data1]# docker run --rm --volumes-from datavol -v /tmp/backup:/backup ubuntu tar cf /backup/test.tar /data1