使用Docker Swarm定义共享主机卷

我正在尝试使用以下docker-stack.yml文件将我的服务部署到我的Docker Swarm版本17.06-ce。 我想使用卷映射我的Windows主机上的C:/logs目录到我的容器内的/var/log目录。

 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 

我已经几次阅读过卷文档了。 我的音量的语法是否正确? 这是一个支持的情况? 这是一个Docker错误?

当你在版本2中运行它时,Docker运行将起作用,并且使用docker-compose,我们可以运行自定义卷装载。

在版本3中,我们必须使用具有默认卷path或自定义path的命名卷。

这是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 / docker / volumes / repo / _data

我们可以select将自定义path安装到卷上

 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/ 

用于服务,存储和堆栈文件的卷