Docker-nginx資料卷掛載

是橙子呐發表於2024-10-13

資料卷(volume)是一個虛擬目錄,是容器內目錄與宿主機目錄之間對映的橋樑。
以Nginx為例,我們知道Nginx中有兩個關鍵的目錄:

  • html:放置一些靜態資源
  • conf:放置配置檔案
    如果我們要讓Nginx代理我們的靜態資源,最好是放到html目錄;如果我們要修改Nginx的配置,最好是找到conf下的nginx.conf檔案。
    但遺憾的是,容器執行的Nginx所有的檔案都在容器內部。所以我們必須利用資料卷將兩個目錄與宿主機目錄關聯,方便我們操作。如圖:
    image
    在上圖中:
  • 我們建立了兩個資料卷: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代理了。
    image
    利用資料卷掛載nginx步驟:
  1. 建立資料卷
    docker volume create nginx_html
  2. 查詢資料卷位置
    docker volume inspect nginx_html
    image
    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
    image
    5.執行http://伺服器ip:81/
    image

相關文章