我正在使用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教程进行了验证。
答案 0 :(得分:2)
目前撰写并不支持Swarm模式。
在主节点上运行docker compose up
时,为Compose文件中的服务撰写问题docker run
,而不是docker service create
- 这就是容器全部在主服务器上运行的原因。有关选项,请参阅this answer。
在第二点,网络的范围是1.12
。如果你检查你的网络,你会发现它已经在swarm级别创建了,但是Compose正在运行引擎级别的容器,这些容器无法看到群网络。
答案 1 :(得分:0)
我们现在可以用docker compose v3来做到这一点。
https://docs.docker.com/engine/swarm/#feature-highlights https://docs.docker.com/compose/compose-file/
您必须使用命令
初始化群集群集 $ docker swarm init
您可以添加更多节点作为工作人员或经理 -
将两个节点添加到群集后,传递compose v3即部署文件以创建堆栈。撰写文件应该只包含预定义的图像,您不能在Swarm模式下提供Docker文件进行部署。
$ 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: