1. 程式人生 > >Docker資料卷管理

Docker資料卷管理

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

在這裡插入圖片描述在這裡插入圖片描述