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