【问题标题】:Defining Shared Host Volumes using Docker Swarm使用 Docker Swarm 定义共享主机卷
【发布时间】:2018-01-03 00:07:15
【问题描述】:

我正在尝试使用以下 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

我已经读过几次volumes documentation。我的卷的语法是否正确?这是受支持的方案吗?这是 Docker 错误吗?

【问题讨论】:

    标签: docker docker-compose docker-swarm docker-volume docker-stack


    【解决方案1】:

    当您在版本 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/
    

    VOLUMES FOR SERVICES, SWARMS, AND STACK FILES

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多