1

我正在嘗試使用以下docker-stack.yml文件將我的服務部署到我的Docker Swarm版本17.06-ce。我想使用卷將Windows主機上的C:/logs目錄映射到容器內的/var/log目錄。使用Docker Swarm定義共享主機卷

version: '3.3' 

services: 
    myapi: 
    image: mydomain/myimage 
    ports: 
     - "5000:80" 
    volumes: 
     - "c:/logs:/var/log/bridge" 

當我刪除卷部分時,我的容器開始正常。添加捲後,容器甚至不會嘗試啓動,即:

  1. docker container ps --all不顯示我的容器。
  2. docker events不顯示容器試圖啓動。

對我來說,下面的命令的作品,所以我知道我的語法是正確的:

docker run -it -v "c:/logs:/var/log/bridge" alpine 

我讀過volumes documentation幾次了。我的音量的語法是否正確?這是一個受支持的場景嗎?這是一個Docker錯誤?

回答

1

當您在版本2中運行它並使用docker-compose時,我們可以運行自定義卷裝入,Docker運行將可以正常工作。

在版本三中,我們必須使用具有默認卷路徑或自定義路徑的命名卷。

這裏是默認音量泊塢窗,構成

version: "3.3" 

services: 
    mysql: 
    image: mysql 
    volumes: 
     - db-data:/var/lib/mysql/data 
    networks: 
     - overlay 
    deploy: 
     mode: replicated 
     replicas: 2 
     endpoint_mode: dnsrr 

volumes: 
    db-data: 

卷安裝到默認的/ var/lib中/泊塢窗/卷/回購/ _data

我們必須選擇安裝定製路徑收卷

version: "3.3" 

services: 
    mysql: 
    image: mysql 
    volumes: 
     - db-data:/var/lib/mysql/data 
    networks: 
     - overlay 
    deploy: 
     mode: replicated 
     replicas: 2 
     endpoint_mode: dnsrr 

volumes: 
    db-data: 
    driver: local 
    driver_opts: 
     o: bind 
     type: none 
     device: /home/ubuntu/db-data/ 

VOLUMES FOR SERVICES, SWARMS, AND STACK FILES