docker學習(10)數據卷掛載之使用dockerfile

dockerfile就是用來構建docker鏡像的構建文件,就是一個命令腳本。由於鏡像是一層一層的,腳本也是一個個的命令,代表一層一層的鏡像。

dockerfile也可以實現掛載,示例如下:

我們在/home/docker-test-volume的dockerfile1裏寫入如下腳本

FROM centos

VOLUME ["volume01","volume02"]

CMD echo "------end-----"
CMD /bin/bash
[root@wangstudy docker-test-volume]# docker build -f dockerfile1 -t wang/centos .
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM centos
 ---> 470671670cac
Step 2/4 : VOLUME ["volume01","volume02"]
 ---> Running in afcfd0ed0d77
Removing intermediate container afcfd0ed0d77
 ---> 4936b8e8924a
Step 3/4 : CMD echo "------end-----"
 ---> Running in 5cde4d48d667
Removing intermediate container 5cde4d48d667
 ---> fe92d9708f50
Step 4/4 : CMD /bin/bash
 ---> Running in a28609ac50e3
Removing intermediate container a28609ac50e3
 ---> 531f66453bed
Successfully built 531f66453bed
Successfully tagged wang/centos:latest
[root@wangstudy docker-test-volume]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
wang/centos           latest              531f66453bed        About an hour ago   237MB
tomcat02              1.0                 0b2dd38750b5        20 hours ago        652MB
portainer/portainer   latest              1ec116aed60c        5 days ago          79.1MB
redis                 latest              36304d3b4540        5 days ago          104MB
mysql                 5.7                 a4fdfd462add        13 days ago         448MB
tomcat                latest              1b6b1fe7261e        2 weeks ago         647MB
nginx                 latest              9beeba249f3e        2 weeks ago         127MB
centos                latest              470671670cac        4 months ago        237MB

這樣我們的鏡像就創建成功了,可以看到我們剛指定的掛載目錄volume1和volume2已經存在了

[root@wangstudy docker-test-volume]# docker run -it 531f66453bed
[root@a0b6eb1b256a /]# ls -l
total 56
lrwxrwxrwx   1 root root    7 May 11  2019 bin -> usr/bin
drwxr-xr-x   5 root root  360 Jun  3 10:07 dev
drwxr-xr-x   1 root root 4096 Jun  3 10:07 etc
drwxr-xr-x   2 root root 4096 May 11  2019 home
lrwxrwxrwx   1 root root    7 May 11  2019 lib -> usr/lib
lrwxrwxrwx   1 root root    9 May 11  2019 lib64 -> usr/lib64
drwx------   2 root root 4096 Jan 13 21:48 lost+found
drwxr-xr-x   2 root root 4096 May 11  2019 media
drwxr-xr-x   2 root root 4096 May 11  2019 mnt
drwxr-xr-x   2 root root 4096 May 11  2019 opt
dr-xr-xr-x 113 root root    0 Jun  3 10:07 proc
dr-xr-x---   2 root root 4096 Jan 13 21:49 root
drwxr-xr-x  11 root root 4096 Jan 13 21:49 run
lrwxrwxrwx   1 root root    8 May 11  2019 sbin -> usr/sbin
drwxr-xr-x   2 root root 4096 May 11  2019 srv
dr-xr-xr-x  13 root root    0 May 30 08:43 sys
drwxrwxrwt   7 root root 4096 Jan 13 21:49 tmp
drwxr-xr-x  12 root root 4096 Jan 13 21:49 usr
drwxr-xr-x  20 root root 4096 Jan 13 21:49 var
drwxr-xr-x   2 root root 4096 Jun  3 10:07 volume01
drwxr-xr-x   2 root root 4096 Jun  3 10:07 volume02

我們查看鏡像詳細信息,可以發現如下掛載目錄

  "Mounts": [
            {
                "Type": "volume",
                "Name": "1c0062d23655e442597411a8b8a3337c86a6a7e59b4b8dca73b5e6804f959037",
                "Source": "/var/lib/docker/volumes/1c0062d23655e442597411a8b8a3337c86a6a7e59b4b8dca73b5e6804f959037/_data",
                "Destination": "volume01",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "volume",
                "Name": "73b59c5be43bc6ab8774e3625fa193db024f4b563f767ffc0474505cfef54d22",
                "Source": "/var/lib/docker/volumes/73b59c5be43bc6ab8774e3625fa193db024f4b563f767ffc0474505cfef54d22/_data",
                "Destination": "volume02",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],

我們在volume01裏面添加一個container.txt文件。

[root@a0b6eb1b256a /]# cd volume01
[root@a0b6eb1b256a volume01]# touch container.txt
[root@a0b6eb1b256a volume01]# ls
container.txt

容器外對應路徑查看,發現掛載成功

[root@wangstudy docker-test-volume]# cd /var/lib/docker/volumes/1c0062d23655e442597411a8b8a3337c86a6a7e59b4b8dca73b5e6804f959037/_data
[root@wangstudy _data]# ls
container.txt

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章