上一篇:Docker的那些事兒—Docker數(shù)據(jù)卷(一)(29)
本節(jié)繼續(xù)討論docker數(shù)據(jù)卷的相關(guān)操作。
Dockerfile中的VOLUME指令等價于docker run -v /data
上一節(jié)我們曾使用docker run -itd -P -v /data --name myhttp httpd的形式啟動容器空闲,運行的結(jié)果是docker在/var/lib/docker/volumes下自動創(chuàng)建了一個目錄xxx帝雇,并將/var/lib/docker/volumes/xxx/_data目錄掛載到了容器的/data目錄。我們在前面學(xué)習(xí)Dockerfile的時候微王,知道有一個VOLUME指令顽馋。關(guān)于這個VOLUME指令的用法可以去查看:Dockerfile常用指令章節(jié)皱碘。我們簡單的寫個Dockerfile,然后build鏡像均唉,并使用新的鏡像啟動一個容器是晨。
FROM httpd
VOLUME ["/data"]
CMD [“/bin/bash”]
新的鏡像為httpd:v1.0,docker run啟動時未使用-v選項
Docker仍然創(chuàng)建了卷:
bd3883a57997ee16365fac702e4915fb6a43c8175b67d42413e182f7cad5e820舔箭,并且將/var/lib/docker/volumes/bd3883a57997ee16365fac702e4915fb6a43c8175b67d42413e182f7cad5e820/_data掛載到了容器/data下罩缴。
docker container inspect 242cdd1fbfe4
這就是Dockerfile中VOLUME指令的作用。
docker run命令支持多個-v選項
例如:docker run -itd --rm -v?my_volume1:/data1 -v my_volume2:/data2 --name myhttp httpd层扶。其執(zhí)行結(jié)果:
1箫章、創(chuàng)建了兩個本地卷my_volume1和my_volume2,可以使用docker volume ls查詢镜会。
2檬寂、分別將/var/lib/docker/volumes/my_volume1/_data和/var/lib/docker/volumes/my_volume2/_data掛載到容器的/data1和/data2目錄。
同一個卷支持掛載到多個容器戳表,實現(xiàn)多個容器的數(shù)據(jù)共享
例如:
docker run -itd --rm -v my_volume1:/data1 --name myhttp1 httpd
docker run -itd --rm -v my_volume1:/data2 --name myhttp2 httpd