2017-03-22 62 views
1

我試圖從版本1升級泊塢窗,compose.yml到版本3安裝在撰寫文件版本的Windows主機目錄3

主要問題有關

volumes_from: To share a volume between services, 
define it using the top-level volumes option and 
reference it from each service that shares it using the 
service-level volumes option. 

最簡單的例子:

版本「1」

data: 
    image: postgres:latest 
    volumes: 
    - ./pg_hba.conf/:/var/lib/postgresql/data/pg_hba.conf 

postgres: 
    restart: always 
    image: postgres:latest 
    volumes_from: 
    - data 
    ports: 
    - "5432:5432" 

如果我理解正確,應該轉換爲

version: "3" 

services: 
    db: 
    image: postgres:latest 
    restart: always 
    volumes: 
     - db-data:/var/lib/postgresql/data 
    ports: 
     - "5432:5432" 
    networks: 
     - appn 

    networks: 
    appn: 

    volumes: 
    db-data:? 

問題:如何現在頂層卷選項我可以設置相對路徑文件夾 「example_folder」 從Windows主機「DB-數據」

回答

1

在這種情況下,您可能會考慮而不是使用volumes_from

如在此提到的由docker 1.13 issueSebastiaan van Stijn (thaJeztah)

volumes_from的基本上是一個「懶」的方式從一個容器複製卷定義到另一個,所以;

docker run -d --name one -v myvolume:/foo image-one 

docker run -d --volumes-from=one image-two 

與運行相同;

docker run -d --name one -v myvolume:/foo image-one 
docker run -d --name two -v myvolume:/foo image-two 

如果要部署到AWS你不應該使用綁定坐騎,但使用命名volumes代替(如上面的示例所示),例如:

version: "3.0" 

services: 
    db: 
    image: nginx 
    volumes: 
     - uploads-data:/usr/share/nginx/html/uploads/ 

volumes: 
    uploads-data: 

您可以使用docker-compose運行;

docker-compose up -d 
Creating network "foo_default" with the default driver 
Creating volume "foo_uploads-data" with default driver 
Creating foo_db_1 

基本上,這是不是在搬運工撰寫第3版可供選擇:

有幾個原因volumes_from沒有移植到撰寫文件「3」;

  • 在swarm中,不能保證「from」容器在同一節點上運行。使用volumes_from不會導致預期的結果。
    這是特別具有壓圈支架,其中,在一個羣,具有到主機上不存在的情況下(不自動創建的)
  • 還有一個「人種」的條件(如前面所述)
  • 的「數據」容器必須正確使用卷的正確路徑作爲使用卷的「應用程序」容器(即,如果「應用程序」使用/some/path/in/container中的卷,則數據容器也必須具有卷/some/path/in/container)。有很多情況下卷可能會被多個服務共享,並且這些卷可能會消耗不同路徑中的卷。

而且,在issue 19990提到:

您所描述的 「常規」 卷是綁定貼裝,;您從主機指定路徑,並將其安裝在容器中。沒有數據從容器複製到該路徑,因爲使用了來自主機的文件。

對於卷,您要求docker創建一個卷(持久存儲)來存儲數據,並將容器中的數據複製到該卷。

卷由docker(或通過插件)管理,存儲路徑(或機制)是一個實現細節,因爲您所要求的只是一個存儲,它是託管的。

對於你的問題,你就需要定義一個碼頭工人體積容器中,把它複製你的主機內容:

services: 
    data: 
    image: "nginx:alpine" 
    volumes: 
     - ./pg_hba.conf/:/var/lib/postgresql/data/pg_hba.conf  
+0

許多有用的鏈接尼斯的答案。 thaJeztah的帖子更有意義,然後整個(撰寫文件參考)頁面。另外「綁定掛載不是卷(但是使用相同的標誌,從命名角度來看可能會造成混淆)」。對我來說很清楚。 – galakt