1. 程式人生 > >docker資料卷使用

docker資料卷使用

Docker volume使用

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

Docker中的資料可以儲存在類似於虛擬機器磁碟的介質中,在Docker中稱為資料卷(Data Volume)。資料卷可以用來儲存Docker應用的資料,也可以用來在Docker容器間進行資料共享。

資料卷呈現給Docker容器的形式就是一個目錄,支援多個容器間共享,修改也不會影響映象。使用Docker的資料卷,類似在系統中使用 mount 掛載一個檔案系統。

1)一個數據卷是一個特別指定的目錄,該目錄利用容器的UFS檔案系統可以為容器提供一些穩定的特性或者資料共享。資料卷可以在多個容器之間共享。

2)建立資料卷,只要在docker run命令後面跟上-v引數即可建立一個數據卷,當然也可以跟多個-v引數來建立多個數據卷,當建立好帶有資料卷的容器後,

   就可以在其他容器中通過--volumes-froms引數來掛載該資料捲了,而不管該容器是否執行。也可以在Dockerfile中通過VOLUME指令來增加一個或者多個數據卷。

3)如果有一些資料想在多個容器間共享,或者想在一些臨時性的容器中使用該資料,那麼最好的方案就是你建立一個數據卷容器,然後從該臨時性的容器中掛載該資料卷容器的資料。

   這樣,即使刪除了剛開始的第一個資料卷容器或者中間層的資料卷容器,只要有其他容器使用資料卷,資料卷都不會被刪除的。

4)不能使用docker export、save、cp等命令來備份資料卷的內容,因為資料卷是存在於映象之外的。備份的方法可以是建立一個新容器,掛載資料卷容器,同時掛載一個本地目錄,

   然後把遠端資料卷容器的資料卷通過備份命令備份到對映的本地目錄裡面。如下:

   # docker run -rm --volumes-from DATA -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data

5)也可以把一個本地主機的目錄當做資料卷掛載在容器上,同樣是在docker run後面跟-

v引數,不過-v後面跟的不再是單獨的目錄了,它是[host-dir]:[container-dir]:[rw|ro]這樣格式的,

   host-dir是一個絕對路徑的地址,如果host-dir不存在,則docker會建立一個新的資料卷,如果host-dir存在,但是指向的是一個不存在的目錄,則docker也會建立該目錄,然後使用該目錄做資料來源。

    

Docker Volume資料卷可以實現:

1)繞過“拷貝寫”系統,以達到本地磁碟IO的效能,(比如執行一個容器,在容器中對資料卷修改內容,會直接改變宿主機上的資料卷中的內容,所以是本地磁碟IO的效能,而不是先在容器中寫一份,最後還要將容器中的修改的內容拷貝出來進行同步。)

2)繞過“拷貝寫”系統,有些檔案不需要在docker commit打包進映象檔案。

3)資料卷可以在容器間共享和重用資料

4)資料卷可以在宿主和容器間共享資料

5)資料卷資料改變是直接修改的

6)資料卷是持續性的,直到沒有容器使用它們。即便是初始的資料卷容器或中間層的資料卷容器刪除了,只要還有其他的容器使用資料卷,那麼裡面的資料都不會丟失。

  

Docker資料持久化:

容器在執行期間產生的資料是不會寫在映象裡面的,重新用此映象啟動新的容器就會初始化映象,會加一個全新的讀寫入層來儲存資料。

如果想做到資料持久化,Docker提供資料卷(Data volume)或者資料容器捲來解決問題,另外還可以通過commit提交一個新的映象來儲存產生的資料。

一、建立一個數據卷

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

如下為容器新增一個數據卷,並將容器名改為data。這個資料卷在容器裡的目錄是/opt/data

[[email protected] ~]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

docker.io/ubuntu    latest              0ef2e08ed3fa        2 weeks ago         130 MB

 

[[email protected]calhost ~]# docker run --name data -v /opt/data -t -i docker.io/ubuntu /bin/bash

[email protected]:/# cd /opt/data/

[email protected]:/opt/data# ls

[email protected]:/opt/data# echo "123" > 123

[email protected]:/opt/data# echo "123123" > 123123

[email protected]:/opt/data# ls

123  123123

 

[[email protected] volumes]# docker ps

CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                     NAMES

2b9aebcf6ce8        docker.io/ubuntu    "/bin/bash"           49 seconds ago      Up 48 seconds                                 data

 

在宿主機上,檢視對應上面的那個資料卷的目錄路徑:

[[email protected] ~]# docker inspect data|grep /var/lib/docker/volumes

                "Source""/var/lib/docker/volumes/89d6562b9c1fe10dd21707cb697a5d481b3c1b000a69b762f540fa826a16972a/_data",

[[email protected] ~]# ls /var/lib/docker/volumes/89d6562b9c1fe10dd21707cb697a5d481b3c1b000a69b762f540fa826a16972a/_data

123  123123

[[email protected] ~]# echo "asdhfjashdfjk" >> /var/lib/docker/volumes/89d6562b9c1fe10dd21707cb697a5d481b3c1b000a69b762f540fa826a16972a/_data/123

[[email protected] ~]#

 

[email protected]:/opt/data# ls

123  123123

[email protected]:/opt/data# cat 123

123

asdhfjashdfjk

二、掛載宿主機檔案或目錄到容器資料卷

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

可以直接掛載宿主機檔案或目錄到容器裡,可以理解為目錄對映,這樣就可以讓所有的容器共享宿主機資料,從而只需要改變宿主機的資料來源就能夠影響到所有的容器資料。

 

注意:

-v後面的對映關係是"宿主機檔案/目錄:容器裡對應的檔案/目錄",其中,宿主機上的檔案/目錄是要提前存在的,容器裡對應的檔案/目錄會自動建立。

 

資料卷許可權:

掛載的資料預設為可讀寫許可權。

但也可以根據自己的需求,將容器裡掛載共享的資料設定為只讀,這樣資料修改就只能在宿主機上操作。如下例項:

 

1)掛載宿主機檔案到容器上

[[email protected] ~]# cat /etc/web.list

192.168.1.100

192.168.1.101

192.168.1.103

[[email protected] ~]# docker run -t -i --name test -v /etc/web.list:/etc/web.list:ro docker.io/centos /bin/bash

[[email protected] /]# cat /etc/web.list

192.168.1.100

192.168.1.101

192.168.1.103

[[email protected] /]# echo "192.168.1.115" >> /etc/web.list

bash/etc/web.list: Read-only file system

[[email protected] /]#

  

在宿主機上修改共享資料

[[email protected] ~]# echo "192.168.1.115" >> /etc/web.list

[[email protected] ~]#

  

[[email protected] /]# cat /etc/web.list

192.168.1.100

192.168.1.101

192.168.1.103

192.168.1.115

 

2)掛載宿主機目錄到容器上

[[email protected] ~]# mkdir /var/huanqiupc

[[email protected] ~]# echo "test" > /var/huanqiupc/test

[[email protected] ~]# echo "test1" > /var/huanqiupc/test1

[[email protected] ~]# docker run -t -i --name hqsb -v /var/huanqiupc:/opt/huantime docker.io/centos /bin/bash

[[email protected] /]# cd /opt/huantime/

[[email protected] huantime]# ls

test  test1

[[email protected] huantime]# cat test

test

[[email protected] huantime]# cat test1

test1

[[email protected] huantime]# echo "1231" >>test

[[email protected] huantime]# echo "44444" >>test1

 

宿主機上檢視

[[email protected] ~]# cat /var/huanqiupc/test

test

1231

[[email protected] ~]# cat /var/huanqiupc/test1

test1

44444

 

3)掛載多個目錄

[[email protected] ~]# mkdir /opt/data1 /opt/data2

[[email protected] ~]# echo "123456" > /opt/data1/test1

[[email protected] ~]# echo "abcdef" > /opt/data2/test2

[[email protected] ~]# docker run --name data -v /opt/data1:/var/www/data1 -v /opt/data2:/var/www/data2:ro -t -i docker.io/ubuntu /bin/bash

[email protected]:/# ls /var/www/data1

test1

[email protected]:/# ls /var/www/data2

test2

[email protected]:/# cat /var/www/data1/test1

123456

[email protected]:/# cat /var/www/data2/test2

abcdef

[email protected]:/# echo "date1" >> /var/www/data1/test1

[email protected]:/# echo "date2" >> /var/www/data2/test2

bash/var/www/data2/test2: Read-only file system

[email protected]:/#

三、建立資料卷容器
啟動一個名為xqsj_Container容器,此容器包含兩個資料卷/var/volume1和/var/volume2(這兩個資料卷目錄是在容器裡的,容器建立的時候會自動生成這兩目錄)

1

2

3

4

5

6

7

8

9

10

注意一個細節:

下面的建立命令中,沒有加-t和-i引數,所以這個容器建立好之後是登陸不了的!

-i:表示以“互動模式”執行容器

-t:表示容器啟動後會進入其命令列

[[email protected] ~]# docker run -v /var/volume1 -v /var/volume2 --name xqsj_Container centos /bin/bash

[[email protected] ~]#

 

所以要想建立容器後能正常登陸,就需要新增上面兩個引數

[[email protected] ~]# docker run -t -i -v /var/volume1 -v /var/volume2 --name xqsj_Container centos /bin/bash

[[email protected] /]#

檢視宿主機上與資料卷對應的目錄路徑:

1

2

3

4

[[email protected] ~]# docker inspect xqsj_Container|grep /var/lib/docker/volumes

                "Source""/var/lib/docker/volumes/b8d2e5bcadf2550abd36ff5aa544c721a45464a4406fb50979815de773086627/_data",

                "Source""/var/lib/docker/volumes/a34fa3a0a7a2f126b0d30a32b1034f20917ca7bd0dda346014d768b5ebb68f6b/_data",

由上面命令結果可以查到,兩個資料卷/var/volume1/var/volume2下的資料在/var/lib/docker/volumes/下對於的兩個目錄的_data下面

建立App_Container容器,掛載xqsj_Container容器中的資料卷
[[email protected] ~]# docker run -t -i --rm --volumes-from xqsj_Container --name App_Container centos /bin/bash
[[email protected] /]# ls /var/volume1                           //發現這兩個資料卷都存在
[[email protected] /]# ls /var/volume2
[[email protected] /]# echo "this is volume1" > /var/volume1/test1
[[email protected] /]# echo "this is volume2" > /var/volume1/test2

可以再建立一個容器,掛載App_Container中從xqsj_Container掛載的資料卷。當然也可以直接掛載初始的xqsj_Container容器資料卷
[[email protected] ~]# docker run -t -i --rm --volumes-from App_Container --name LastApp_Container centos /bin/bash
[[email protected] /]# ls /var/volume1
test1
[[email protected] /]# ls /var/volume2
test2
[[email protected] /]# cat /var/volume1/test1 
this is volume1
[[email protected] /]# cat /var/volume2/test2 
this is volume2

即便是刪除了初始的資料卷容器xqsj_Container,或是刪除了其它容器,但只要是有容器在使用該資料卷,那麼它裡面的資料就不會丟失!(除非是沒有容器在使用它們)

四、備份資料卷

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

sudo docker run --rm --volumes-from test -v $(pwd):/backup ubuntu:14.04 tar cvf /backup/test.tar /test

tar: Removing leading `/' from member names

/test/

/test/b

/test/d

/test/c

/test/a

  

以上命令表示:

啟動一個新的容器並且從test容器中掛載卷,然後掛載當前目錄到容器中為backup,並備份test卷中所有的資料為test.tar,執行完成之後刪除容器--rm,此時備份就在當前的目錄下,名為test.tar

注意:後面的/test是資料卷的目錄路徑(即資料卷建立時在容器裡的路徑)

  

ls

宿主機當前目錄下產生了test卷的備份檔案test.tar

  

---------------------------------------------看看下面的一個例項---------------------------------------------

先建立一個容器wang,包含兩個資料卷/var/volume1/var/volume2(這兩個目錄是在容器裡的資料卷路徑)

[[email protected] ~]# docker run -t -i -v /var/volume1 -v /var/volume2 --name wang docker.io/centos /bin/bash

[[email protected] /]#

  

根據Docker的資料持久化之資料卷容器可知,上面建立的wang資料卷容器掛載了/var/volume1/var/volume2兩個目錄

然後在資料卷裡寫些資料,以供測試。

[[email protected] /]# cd /var/volume1

[[email protected] volume1]# echo "test1" > test1

[[email protected] volume1]# echo "test11" > test11

[[email protected] volume1]# echo "test111" > test111

[[email protected] volume1]# ls

test1  test11  test111

[[email protected] volume1]# cd ../volume2

[[email protected] volume2]# echo "test2" > test2

[[email protected] volume2]# echo "test22" > test22

[[email protected] volume2]# echo "test222" > test222

[[email protected] volume2]# ls

test2  test22  test222

[[email protected] volume2]#

  

然後進行這兩個資料卷的備份

[[email protected] ~]# docker ps

CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                     NAMES

83eb43492ae7        docker.io/centos    "/bin/bash"           2 minutes ago       Up 2 minutes                                  wang

  

  

現在開始進行資料卷的備份操作:

為了利用資料卷容器備份,使用--volumes-from標記來建立一個載入wang容器卷的容器,並從主機掛載當前目錄到容器的/backup目錄。並備份wang卷中的資料,執行完成之後刪除容器--rm,此時備份就在當前的目錄下了。

  

1)備份wang容器中的/var/volume1資料卷資料<strong>(注意下面:命令中的-i和-t這兩個引數加不加都可以;--rm加上,備份後就會自動刪除這個容器,如果不加這個--rm引數,那麼備份後的容器就會保留,docker ps -a就會檢視到)</strong>

[[email protected] ~]# docker run -i -t --rm --volumes-from wang -v $(pwd):/backup docker.io/centos tar cvf /backup/backup1.tar /var/volume1

tar: Removing leading `/' from member names

/var/volume1/

/var/volume1/test1

/var/volume1/test11

/var/volume1/test111

  

2)備份wang容器中的/var/volume2資料卷資料

[[email protected] ~]# docker run -i -t --rm --volumes-from wang -v $(pwd):/backup docker.io/centos tar cvf /backup/backup2.tar /var/volume2

tar: Removing leading `/' from member names

/var/volume2/

/var/volume2/test2

/var/volume2/test22

/var/volume2/test222

  

3)備份wang容器中的/var/volume1/var/volume2資料卷資料

[[email protected] ~]# docker run -i -t --rm --volumes-from wang -v $(pwd):/backup docker.io/centos tar cvf /backup/backup.tar /var/volume1 /var/volume2

tar: Removing leading `/' from member names

/var/volume1/

/var/volume1/test1

/var/volume1/test11

/var/volume1/test111

/var/volume2/

/var/volume2/test2

/var/volume2/test22

/var/volume2/test222

[[email protected] ~]# ls

anaconda-ks.cfg  a.py  backup1.tar  backup2.tar  backup.tar  mkimage-yum.sh  pipework  var  wang.tar

  

這樣,資料卷容器中的資料就備份完成了. 簡言之就是:

先建立一個容器,並掛載要備份的容器資料卷,再掛載資料卷(pwd):/backup目錄到容器/bakcup,在容器中執行備份/data目錄到/backup,也就是備份到宿主機$(pwd):/backup目錄。

五、恢復或遷移資料卷

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

可以恢復給同一個容器或者另外的容器,新建容器並解壓備份檔案到新的容器資料卷

sudo docker run -t -i -d -v /test --name test4 ubuntu:14.04  /bin/bash

sudo docker run --rm --volumes-from test4 -v $(pwd):/backup ubuntu:14.04 tar xvf /backup/test.tar -C /

恢復之前的檔案到新建卷中,執行完後自動刪除容器 testtest/b test/d test/c test/a

  

-----------------------------接著上面的例項進行資料卷恢復操作--------------------------

[[email protected] ~]# docker ps

CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                     NAMES

531c9d8adf4c        docker.io/centos    "/bin/bash"           2 minutes ago       Up 44 seconds                                 wang

  

1)恢復資料給同一個容器

測了測試效果,先刪除資料卷(注意:資料卷目錄刪除不了,只能刪除其中的資料。)

[[email protected] ~]# docker attach wang

[[email protected] ~]# ls /var/volume1

test1  test11  test111

[[email protected] ~]# ls /var/volume2

test2  test22  test222

[[email protected] ~]# rm -rf /var/volume1 /var/volume2

rm: cannot remove '/var/volume1': Device or resource busy 

rm: cannot remove '/var/volume2': Device or resource busy

[[email protected] ~]# ls /var/volume2

[[email protected] ~]# ls /var/volume1

  

現在進行資料卷恢復,恢復資料卷中的所有資料:

[[email protected] ~]# ls

anaconda-ks.cfg  a.py  backup1.tar  backup2.tar  backup.tar  mkimage-yum.sh  pipework  var  wang.tar

  

注意-C後面的路徑,這個路徑表示將資料恢復到容器裡的路徑。

命令中用"/",即表示將backup.tar中的資料解壓到容器的/路徑下。後面跟什麼路徑,就解壓到這個路徑下。因此這裡用"/"

[[email protected] ~]# docker run --rm --volumes-from wang -v $(pwd):/backup docker.io/centos tar xvf /backup/backup.tar -C /

var/volume1/

var/volume1/test1

var/volume1/test11

var/volume1/test111

var/volume2/

var/volume2/test2

var/volume2/test22

var/volume2/test222

  

再次到容器裡檢視,發現數據卷裡的資料已經恢復了

[[email protected] ~]# ls /var/volume1

test1  test11  test111

[[email protected] ~]# ls /var/volume2

test2  test22  test222

  

2)恢復資料給另外的容器,新建容器並解壓備份檔案到新的容器資料卷

即新建一個容器huihui,將上面備份的資料卷資料恢復到這個新容器裡。

[[email protected] ~]# docker run -t -i -v /var/volume1 -v /var/volume2 --name huihui docker.io/centos /bin/bash

[[email protected] var]# ls /var/volume1

[[email protected] var]# ls /var/volume2

  

[[email protected] ~]# ls

anaconda-ks.cfg  a.py  backup1.tar  backup2.tar  backup.tar  mkimage-yum.sh  pipework  var  wang.tar

  

[[email protected] ~]# docker run --rm --volumes-from huihui -v $(pwd):/backup docker.io/centos tar xvf /backup/backup.tar -C /

var/volume1/

var/volume1/test1

var/volume1/test11

var/volume1/test111

var/volume2/

var/volume2/test2

var/volume2/test22

var/volume2/test222

  

[[email protected] ~]# docker ps

CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                     NAMES

813afe297b60        docker.io/centos    "/bin/bash"           17 seconds ago      Up 16 seconds                                 huihui

  

  

這裡注意一下:

新容器建立時掛載的資料卷路徑最好是和之前備份的資料卷路徑一致

如下:

1)新建容器掛載的資料卷只是備份資料卷的一部分,那麼恢復的時候也只是恢復一部分資料。如下,新容器建立時只掛載/var/volume1

[[email protected] ~]# docker run -t -i -v /var/volume1 --name huihui docker.io/centos /bin/bash

[[email protected] /]# ls /var/volume1/

[[email protected] /]# ls /var/volume2

ls: cannot access /var/volume2: No such file or directory

  

[[email protected] ~]# docker run --rm --volumes-from huihui -v $(pwd):/backup docker.io/centos tar xvf /backup/backup.tar -C /

var/volume1/

var/volume1/test1

var/volume1/test11

var/volume1/test111

var/volume2/

var/volume2/test2

var/volume2/test22

var/volume2/test222

[[email protected] ~]#

  

檢視容器,發現只恢復了/var/volume1的資料,/var/volume2資料沒有恢復,因為沒有容器建立時沒有掛載這個。

[[email protected] ~]# docker run -t -i -v /var/volume1 --name huihui docker.io/centos /bin/bash

[[email protected] /]# ls /var/volume1/

[[email protected] /]# ls /var/volume2

ls: cannot access /var/volume2: No such file or directory

  

2)新容器建立時只掛載/var/volume2

[[email protected] ~]# docker run -t -i -v /var/volume2 --name huihui docker.io/centos /bin/bash

[[email protected] /]# ls /var/volume2/

[[email protected] /]# ls /var/volume1

ls: cannot access /var/volume1: No such file or directory

  

[[email protected] ~]# docker run --rm --volumes-from huihui -v $(pwd):/backup docker.io/centos tar xvf /backup/backup.tar -C /

var/volume1/

var/volume1/test1

var/volume1/test11

var/volume1/test111

var/volume2/

var/volume2/test2

var/volume2/test22

var/volume2/test222

[[email protected] ~]#

  

[[email protected] /]# ls /var/volume1

ls: cannot access /var/volume1: No such file or directory

[[email protected] /]# ls /var/volume2/

test2  test22  test222

  

3)如果新容器建立時掛載的資料卷目錄跟之前備份的路徑不一致

[[email protected] ~]# docker run -t -i -v /var/huihui --name huihui docker.io/centos /bin/bash

[[email protected] /]# ls /var/huihui/

[[email protected] /]#

  

如果解壓時-C後面跟的路徑不是容器掛載的容器,那麼資料恢復不了,如下

[[email protected] ~]# docker run --rm --volumes-from huihui -v $(pwd):/backup docker.io/centos tar xvf /backup/backup.tar -C /

var/volume1/

var/volume1/test1

var/volume1/test11

var/volume1/test111

var/volume2/

var/volume2/test2

var/volume2/test22

var/volume2/test222

  

發現容器內資料沒有恢復

[[email protected] /]# ls /var/huihui/

[[email protected] /]#

  

但是如果解壓時-C後面跟的是容器掛載的路徑,資料就能正常恢復

[[email protected] ~]# docker run --rm --volumes-from huihui -v $(pwd):/backup docker.io/centos tar xvf /backup/backup.tar -C /var/huihui

var/volume1/

var/volume1/test1

var/volume1/test11

var/volume1/test111

var/volume2/

var/volume2/test2

var/volume2/test22

var/volume2/test222

[[email protected] ~]#

  

發現容器內資料已經恢復了

[[email protected] /]# ls /var/huihui/

var

[[email protected] /]# ls /var/huihui/var/

volume1  volume2

[[email protected] /]# ls /var/huihui/var/volume1

test1  test11  test111

[[email protected] /]# ls /var/huihui/var/volume2

test2  test22  test222

六、刪除資料卷

1

2

3

4

5

6

7

8

Volume 只有在下列情況下才能被刪除:

1)docker rm -v刪除容器時添加了-v選項

2)docker run --rm執行容器時添加了--rm選項

否則,會在/var/lib/docker/volumes目錄中遺留很多不明目錄。

  

可以使用下面方式找出,然後刪除_data目錄下的資料檔案

[[email protected] volumes]# docker inspect huihui|grep /var/lib/docker/volumes

                "Source""/var/lib/docker/volumes/97aa95420e66de20abbe618fad8d0c1da31c54ce97e32a3892fa921c7942d42b/_data",

***************當你發現自己的才華撐不起野心時,就請安靜下來學習吧***************