使用docker-compose与docker swarm

时间:2016-10-05 13:39:33

标签: jenkins docker docker-compose docker-swarm

我正在使用docker 1.12.1 我有一个简单的docker-compose脚本。

version: '2'

services:
  jenkins-slave:
    build: ./slave
    image: jenkins-slave:1.0
    restart: always
    ports:
     - "22"
    environment:
     - "constraint:NODE==master1"
  jenkins-master:
    image: jenkins:2.7.1
    container_name: jenkins-master
    restart: always
    ports:
     - "8080:8080"
     - "50000"
    environment:
     - "constraint:NODE==node1"

我使用docker-compose -p jenkins up -d运行此脚本。 这创建我的2个容器,但只在我的主人(从我执行我的命令)。我希望在主服务器上创建一个,在节点上创建一个。 我也尝试添加

networks:
  jenkins_swarm:
    driver: overlay

  networks:
     - jenkins_swarm

每次服务之后但是失败了:

Cannot create container for service jenkins-master: network jenkins_jenkins_swarm not found

执行docker network ls

时创建网络

可以帮助我使用docker-compose在我的2个节点上部署2个容器的人。 Swarm正在我的"集群"上工作。我按照this教程进行了验证。

2 个答案:

答案 0 :(得分:2)

目前撰写并不支持Swarm模式。

在主节点上运行docker compose up时,为Compose文件中的服务撰写问题docker run,而不是docker service create - 这就是容器全部在主服务器上运行的原因。有关选项,请参阅this answer

在第二点,网络的范围是1.12。如果你检查你的网络,你会发现它已经在swarm级别创建了,但是Compose正在运行引擎级别的容器,这些容器无法看到群网络。

答案 1 :(得分:0)

$ docker stack services PL

  • 尝试使用标签&放置约束以将服务放在不同节点上。

示例" dev-compose-deploy.yml"档案供您参考

version: "3"

services:

  nginx:
    image: nexus.example.com/pl/nginx-dev:latest
    extra_hosts:
      - "dev-pldocker-01:10.2.0.42”
      - "int-pldocker-01:10.2.100.62”
      - "prd-plwebassets-01:10.2.0.62”
    ports:
      - "80:8003"
      - "443:443"
    volumes:
      - logs:/app/out/
    networks:
      - pl
    deploy:
      replicas: 3
      labels:
        feature.description: “Frontend”
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: any
      placement:
        constraints: [node.role == worker]
    command: "/usr/sbin/nginx"

  viz:
    image: dockersamples/visualizer
    ports:
      - "8085:8080"
    networks:
      - pl
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    deploy:
      replicas: 1
      labels:
        feature.description: "Visualizer"
      restart_policy:
        condition: any
      placement:
        constraints: [node.role == manager]

networks:
pl:

volumes:
logs: