Asi*_*mez 30 docker dockerfile docker-compose docker-swarm
我有一个docker-compose文件,它在同一主机中部署了8种不同的docker服务.是否可以将其部署在不同的主机中?,我想在一个主机中部署一些服务,在其他主机远程部署另一个服务.我需要使用docker-swarm吗?或者是一种更简单的方法吗?
我已经读过它可以使用DOCKER_HOST来完成,但如果我使用这个变量配置/ etc/default/docker,所有服务都将在远程主机上运行,我需要的是一个远程主机中的一些服务,以及其他其他远程主机中的服务.
viv*_*d4v 14
我们现在可以用docker compose v3做到这一点.
https://docs.docker.com/engine/swarm/#feature-highlights https://docs.docker.com/compose/compose-file/
您必须使用命令初始化swarm集群
$ docker swarm init
您可以添加更多节点作为工作人员或经理 -
将两个节点添加到群集后,传递compose v3即部署文件以创建堆栈.Compose文件应该只包含预定义的图像,你不能在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:
Run Code Online (Sandbox Code Playgroud)
BMi*_*tch 11
对于要部署到多个主机的单个docker-compose.yml,您需要使用独立群(不是更新的群模式,但这种情况正在迅速变化).启动一个swarm管理器,将每个主机定义为其swarm的成员,然后您可以使用docker-compose.yml中的约束来定义在哪些主机上运行哪些服务.
您还可以将docker-compose.yml拆分为多个文件,每个主机一个,然后运行多个docker-compose up命令,并为每个文件定义不同的DOCKER_HOST值.
在这两种情况下,您都需要配置docker安装以在网络上侦听,这应该通过在这些套接字上配置TLS来完成.本文档描述了您需要为此做些什么.
| 归档时间: |
|
| 查看次数: |
14657 次 |
| 最近记录: |