使用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运行这个脚本。 这创build了我的2容器,但只在我的主人(从我执行我的命令)。 我希望在主节点和节点上创build一个。 我也尝试添加

 networks: jenkins_swarm: driver: overlay 

  networks: - jenkins_swarm 

每次服务后,但这是失败的:

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

当我执行docker network ls时创builddocker network ls

有人可以帮我在docker-compose上的2个节点上部署2个容器。 Swarm正在为我的“群集”工作。 我按照这个教程来validation。

撰写目前不支持Swarm模式。

在主节点上运行docker compose up ,Compose会发出Compose文件中的服务的docker run命令,而不是docker service create – 这就是容器都在主服务器上运行的原因。 看到这个答案的选项。

第二点,networking的范围是1.12 。 如果你检查你的networking,你会发现它是在群集级创build的,但是Compose运行的引擎级容器看不到群networking。

$ 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: