簡體   English   中英

在Docker中將目錄掛載到命名卷

[英]Mounting a directory to a named volume in Docker

我希望可以通過命名卷(而不是使用bind mount方法)訪問項目的源代碼。 但是我感到困惑,我不知道如何將主機目錄掛載到命名卷。 因此,我在docker-compose.yml中定義了一個卷:

volumes:
   appData:

services:
   nginx:
      .
      .
      .
      volumes:
         - appData:/usr/share/data

一切正常,但是如何將主機文件添加到命名卷中? 什么時候。

不幸的是,沒有像現在這樣簡單的方法可以實現這一目標。 Docker文檔建議在這種情況下使用綁定安裝或第三方卷插件。 看不到任何近期實施該計划的計划。

但是,您可以通過其他方式手動進行操作-

  1. 創建卷(使用撰寫時,以當前目錄(PROJECTNAME)作為前綴創建卷)-
    $ docker volume create ${PROJECTNAME}_appData

  2. 創建一個虛擬容器並將主機目錄復制到命名卷中並進行驗證-

     $ docker container create --name dummy -v ${PROJECTNAME}_appData:/root alpine #Create $ docker cp ${PWD}/source_myfile.txt dummy:/root/myfile.txt #copy $ docker run -v ${PROJECTNAME}_appData:/root alpine ls -l /root #Verify 

現在,當您執行docker-compose up -d ,由於已存在卷,它將跳過創建卷。

PS-我知道這不是標准解決方案,但這就是我可以找到的快速解決方案。 對於永久性修復,您可以使用第三方音量插件。
https://docs.docker.com/engine/extend/legacy_plugins/

獲取有關此問題的更多詳細信息-
參考-https: //github.com/moby/moby/issues/25245

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM