資料卷(volume)是一個虛擬目錄,是容器內目錄與宿主機目錄之間對映的橋樑。
以Nginx為例,我們知道Nginx中有兩個關鍵的目錄:
- html:放置一些靜態資源
- conf:放置配置檔案
如果我們要讓Nginx代理我們的靜態資源,最好是放到html目錄;如果我們要修改Nginx的配置,最好是找到conf下的nginx.conf檔案。
但遺憾的是,容器執行的Nginx所有的檔案都在容器內部。所以我們必須利用資料卷將兩個目錄與宿主機目錄關聯,方便我們操作。如圖:
在上圖中: - 我們建立了兩個資料卷:conf、html
- Nginx容器內部的conf目錄和html目錄分別與兩個資料卷關聯。
- 而資料卷conf和html分別指向了宿主機的/var/lib/docker/volumes/conf/_data目錄和/var/lib/docker/volumes/html/_data目錄
這樣以來,容器內的conf和html目錄就 與宿主機的conf和html目錄關聯起來,我們稱為掛載。此時,我們操作宿主機的/var/lib/docker/volumes/html/_data就是在操作容器內的/usr/share/nginx/html/_data目錄。只要我們將靜態資源放入宿主機對應目錄,就可以被Nginx代理了。
利用資料卷掛載nginx步驟:
- 建立資料卷
docker volume create nginx_html - 查詢資料卷位置
docker volume inspect nginx_html
3.建立容器並指定資料卷,注意透過 -v 引數來指定資料卷
docker run -d --name nginx81 -p 81:80 -v nginx_html:/usr/share/nginx/html nginx
4.在/var/lib/docker/volumes/nginx_html/_data/ 目錄下面新增一個靜態檔案index.html,檔案裡填寫Hello world
5.執行http://伺服器ip:81/