Docker與docker-compose中volume參數(shù)的使用方式
數(shù)據(jù)卷Volume的概念
在docker內有個“數(shù)據(jù)卷持久化”的概念,也就是我們常說的“數(shù)據(jù)掛載”。
它的作用是,將宿主機上的數(shù)據(jù)與容器內的數(shù)據(jù)形成映射,實現(xiàn)數(shù)據(jù)的共享或者數(shù)據(jù)的保存;當刪除容器的時候,在宿主機上仍然能夠保留文件目錄,這就是Volume,數(shù)據(jù)卷。
數(shù)據(jù)掛載的實現(xiàn)方式
docker實現(xiàn)數(shù)據(jù)掛載的方式本質上分為兩種:
- 通過宿主機絕對路徑掛載
- 通過卷標映射掛載(又包括匿名掛載與具名掛載)
宿主機路徑掛載在docker/docker-compose中的使用
使用方法:
# docker docker run -itd -v 宿主機路徑:容器路徑 --name 容器名 鏡像 # docker-compose.yaml services: service_name: container_name: container_name image: image:tag restart: always volumes: - 宿主機路徑:容器路徑
引例如下:
卷標映射掛載在docker/docker-compose中的使用
當使用卷標的方式進行數(shù)據(jù)掛載的時候,容器數(shù)據(jù)具體存放在宿主機的什么路徑其實并不直觀,但是docker提供了方法查看數(shù)據(jù)卷的宿主機目錄,具體查看的方法如下,后文會在引例中直觀說明。
# 查看所有的數(shù)據(jù)卷 sudo docker volume ls # 查看指定數(shù)據(jù)卷的詳細信息 sudo docker volume inspect 數(shù)據(jù)卷名稱
A.匿名掛載
使用方法:
# docker docker run -itd -v 容器路徑 --name 容器名 鏡像 # docker-compose.yaml services: service_name: container_name: container_name image: image:tag restart: always volumes: - 容器路徑
引例:
這種情況下,我們可以看到,當我們通過docker volume ls查看卷標的時候,我們只能查看到其對應的“匿名”的數(shù)據(jù)卷。
如下圖所示,如果我們隨便查看一個數(shù)據(jù)卷的詳細信息(命令為docker volume inspect 數(shù)據(jù)卷),可以看出其掛載點實際是在/var/lib/docker/volumes/<uuid>/_data下面的,其中uuid是docker自動生成的,而/var/lib/docker是docker的默認路徑。
B.具名掛載
使用方法:
# docker docker run -itd -v 數(shù)據(jù)卷名稱:容器路徑 --name 容器名 鏡像 # docker-compose.yaml services: service_name: container_name: container_name image: image:tag restart: always volumes: - 數(shù)據(jù)卷名稱:容器路徑 volumes: 數(shù)據(jù)卷名稱:
引例:
這種情況下,我們可以看到,當我們通過docker volume ls查看卷標的時候,我們能查看到其對應的“具名”的數(shù)據(jù)卷。
可以看出其掛載點實際是在/var/lib/docker/volumes/<數(shù)據(jù)卷名稱>/_data下面的,/var/lib/docker是docker的默認路徑。
別急,特別針對docker-compose,還有另一個現(xiàn)象要看,如下:
可以看到,當我們通過docker-compose啟動容器時,數(shù)據(jù)卷的名稱多了一個software的前綴,而這正是docker-compose.yaml的存放路徑,同時其掛載點在/var/lib/docker/volumes/<yaml路徑_數(shù)據(jù)卷名稱>/_data下面的。
特別的,如果docker-compose在根目錄執(zhí)行,則數(shù)據(jù)卷的名稱的前綴會默認設置為default。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
使用Docker搭建Django,Nginx,R,Python部署環(huán)境的方法
本篇文章主要介紹了使用Docker搭建Django,Nginx,R,Python部署環(huán)境的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-022023年windows?DockerDeskTop最新款4.18.0?全程保姆級安裝圖文教程
這篇文章主要介紹了2023年windows?DockerDeskTop最新款4.18.0?全程保姆級安裝圖文教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04Docker自動化構建Automated Build實現(xiàn)過程圖解
這篇文章主要介紹了Docker自動化構建Automated Build實現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10