Docker-多主机通信

Docker多主机通信

为Docker容器指定自定义网段的固定IP/静态IP地址

第一步:创建自定义网络

备注:这里选取了172.172.0.0网段,也可以指定其他任意空闲的网段

docker network create --subnet=172.172.0.0/16 docker-ice

注:docker-ice为自定义网桥的名字,可自己任意取名。

第二步:在你自定义的网段选取任意IP地址作为你要启动的container的静态IP地址

备注:这里在第二步中创建的网段中选取了172.172.0.10作为静态IP地址。这里以启动docker-ice为例。

docker run -d --net docker-ice --ip 172.172.0.10 ubuntu:16.04

 

查看路由

ip route show|column -t

 

#v1 192.168.1.111

docker network create --subnet=172.15.1.0/16 docker-mimi1

route add -net 172.16.2.0 netmask 255.255.255.0 gw 192.168.1.112

route add -net 172.19.3.0 netmask 255.255.255.0 gw 192.168.1.244

docker run -it --net docker-mimi1 --ip 172.15.1.1 standard:1.0 /bin/bash

 

#v2 192.168.1.112

docker network create --subnet=172.16.2.0/16 docker-mimi2

route add -net 172.15.1.0 netmask 255.255.255.0 gw 192.168.1.111

route add -net 172.19.3.0 netmask 255.255.255.0 gw 192.168.1.244

docker run -it --net docker-mimi2 --ip 172.16.2.1 standard:1.0 /bin/bash

 

#v3 192.168.1.244

docker network create --subnet=172.19.3.0/16 docker-mimi3

route add -net 172.15.1.0 netmask 255.255.255.0 gw 192.168.1.111

route add -net 172.16.2.0 netmask 255.255.255.0 gw 192.168.1.112

docker run -it --net docker-mimi3 --ip 172.19.3.1 standard:1.0 /bin/bash

 

添加永久静态路由

#设置开机启动

#把写好的启动脚本(route)添加到目录/etc/rc.d/init.d/

#chkconfig --add route

#chkconfig route on

#或systemctl enable route

 

route file:

 

#!/bin/bash

#chkconfig: - 90 10

#description:配置路由

 

route add -net 172.15.1.0 netmask 255.255.255.0 gw 192.168.1.111

route add -net 172.16.2.0 netmask 255.255.255.0 gw 192.168.1.112

### Docker-Compose在多主机环境中的最佳实践 Docker-Compose主要用于单节点上的服务编排,但在某些情况下也可以扩展到多主机环境中。为了有效管理和部署跨多个主机的服务,建议采用Swarm模式或其他集群管理工具如Kubernetes。 #### 配置分布式网络以便于容器间通信[^1] 当跨越不同物理机器运行应用时,确保所有参与节点都连接至同一覆盖(overlay)网络非常重要。这允许来自任何地方的应用实例能够相互通信而无需依赖外部路由机制: ```bash docker network create -d overlay my-overlay-network ``` 之后,在`docker-compose.yml`文件里定义使用的自定义网络名称,并将其设置为外部资源: ```yaml version: '3' services: web: image: nginx networks: - my-overlay-net networks: my-overlay-net: external: true ``` #### 初始化并加入Swarm群集以支持多节点调度[^2] 为了让Docker Compose能够在多个服务器之间分配工作负载,需先初始化一个Swarm群集并将其他成员添加进来作为工作者(worker): ```bash # 在领头者(manager)节点执行此命令来开启swarm mode. docker swarm init --advertise-addr <MANAGER-IP> # 获取令牌(token),用于邀请新的worker节点加入当前swarm. docker swarm join-token worker # 将上述获得的token复制粘贴到这里, 并在每一个想要成为worker的工作站上运行它. docker swarm join --token SWMTKN... <MANAGER-IP>:2377 ``` 一旦建立了Swarm群集,就可以利用`docker stack deploy`代替传统的`docker-compose up`来进行全局范围内的应用程序发布: ```bash docker stack deploy -c docker-stack.yml mystackname ``` 这里需要注意的是,对于stack而言应该准备专门设计过的compose v3版本以上的YAML描述文档(`docker-stack.yml`),其中包含了更高级别的抽象概念和服务属性配置选项。 #### 利用密钥和配置对象安全传递敏感数据[^3] 为了避免直接把密码或者其他机密信息硬编码进镜像或是公开暴露在外围环境中,可以考虑借助内置的支持特性——secret以及config object。这些实体可以在不影响原有架构的前提下被引入到项目当中去,从而更好地保护隐私资料的安全性和灵活性。 例如,要加载名为`my_secret.txt`的秘密文本文件作为一个秘密项,则可按照如下方式操作: ```bash echo "This is a secret message." | docker secret create my_secret - ``` 接着更新相应的service部分,使之引用这个新建立起来的秘密源码片段: ```yaml version: '3.1' services: some-service: ... secrets: - source: my_secret target: /run/secrets/my_secret_content secrets: my_secret: external: true ``` 以上措施有助于提高整体系统的健壮性与可靠性,同时也简化了运维人员日常工作的复杂度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值