1. 程式人生 > 其它 >資料卷之Docker File

資料卷之Docker File

  • DockerFile 是用來構建Docker映象的構建檔案,是由一些列命令和引數構成的指令碼。後面再詳細瞭解 DockerFile !

1、我們在宿主機 /home 目錄下新建一個 docker-test-volume資料夾

[root@zheng home]# mkdir docker-test-volume
# 說明:在編寫DockerFile檔案中使用 VOLUME (就是-v)指令來給映象新增一個或多個數據卷
VOLUME["/dataVolumeContainer1","/dataVolumeContainer2","/dataVolumeContainer3"]
# 出於可移植和分享的考慮,我們之前使用的 -v 主機目錄:容器目錄 這種方式不能夠直接在DockerFile中實現。
# 由於宿主機目錄是依賴於特定宿主機的,並不能夠保證在所有宿主機上都存在這樣的特定目錄.

2、編寫DockerFile檔案,名字隨意

[root@zheng docker-test-volume]# pwd
/home/docker-test-volume
[root@zheng docker-test-volume]# vim dockerfile1
[root@zheng docker-test-volume]# cat dockerfile1
#指令命令都要大寫
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]     #匿名掛載
CMD echo "-------end-------"      # 生成完成顯示end
CMD /bin/bash

3、build後生成映象,獲得一個新映象 zheng/centos

docker build -f /home/docker-test-volume/dockerfile1 -t zheng/centos .   
# 注意最後有個.  當前目錄
# build 建造映象 ; -f 指路徑 ; -t tag生成映象加名字,映象名前不需要/

4、啟動容器

[root@zheng docker-test-volume]# docker run -it 0e97e1891a3d /bin/bash   #啟動容器
[root@f5824970eefc /]# ls -l
total 33
lrwxrwxrwx	1 root root	7 May 11 2019 bin -> usr/bin
drwxr-xr-x	2 root root 4096 May 11 11:55 dataVolumeContainer1	# 這個目錄就是我們生成映象時自動掛載的,也就是資料卷目錄
drwxr-xr-x	2 root root 4096 May 11 11:55 dataVolumeContainer2	# 資料卷目錄
drwxr-xr-x	5 root root 360 May 11 11:55 dev
.....

# 這個卷和外部一定有一個同步目錄

對應的主機目錄地址在哪裡?

5、我們在資料卷中新建一個檔案

[root@f5824970eefc dataVolumeContainer1]# pwd
/dataVolumeContainer1
[root@f5824970eefc dataVolumeContainer1]# touch container.txt   #容器內部建立的檔案
[root@f5824970eefc dataVolumeContainer1]# ls -l
total 0
-rw-r--r-- 1 root root 0 May 11 11:58 container.txt
# 在容器內建立了,在容器外就有

6、檢視下這個容器的資訊(元資料)

[root@zheng ~]# docker inspect 0e97e1891a3d(容器ID)
# 找到mounts 檢視輸出的Volumes
"Volumes": {
"/dataVolumeContainer1": {}
"/dataVolumeContainer2": {}
},
# 即可看到路徑

7、這個卷在主機對應的預設位置

cd /var/lib/docker/volumes/容器匿名/_data		#進入目錄
ls			#即可看到有自己建立的檔案