使用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撰写v3来做到这一点。
https://docs.docker.com/engine/swarm/#feature-highlights https://docs.docker.com/compose/compose-file/
-
您必须使用命令初始化群集
$ docker swarm init
-
您可以添加更多的节点作为工人或经理 –
-
将这两个节点添加到集群之后,传递组合文件v3即部署文件以创build堆栈。 撰写文件应该只包含预定义的图像,您不能在Swarm模式下提供用于部署的Dockerfile。
$ docker stack deploy -c dev-compose-deploy.yml --with-registry-auth PL
-
查看您的堆栈服务状态 –
$ 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: