2

我正在尝试使用以下 docker-stack.yml 文件将我的服务部署到我的 Docker Swarm 版本 17.06-ce。我想使用卷将C:/logsWindows 主机上的目录映射到/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 错误吗?

4

1 回答 1

3

当您在版本 2 中运行 Docker run 时,它可以运行,并且使用 docker-compose,我们可以运行自定义卷挂载。

在第三版中,我们必须使用具有默认卷路径或自定义路径的命名卷。

这是具有默认音量的 docker-compose

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

我们可以选择将自定义路径挂载到卷

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/

服务、群和堆栈文件的卷

于 2017-10-17T19:04:03.593 回答