实战案例:构建docker容器集群 (解决方案一:使用自定义网桥连接跨主机容器)

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:
一、实验环境
虚拟机a两块网卡    eth0   eth1 (IP地址static或者dhcp)
虚拟机b两块网卡    eth0   eth1 (IP地址static或者dhcp)

二、在两台虚拟机上配置网桥
虚拟机a操作:
apt-get install bridge-utils
vim /etc/network/interfaces

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

auto br0
iface br0 inet static
address 192.168.200.4
network 192.168.200.0
netmask 255.255.255.0
broadcast 192.168.200.255
gateway 192.168.200.1
dns-nameservers 192.168.89.2
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
bridge_maxage 12

虚拟机b操作:
apt-get install bridge-utils
vim /etc/network/interfaces

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

auto br0
iface br0 inet static
address 192.168.200.3
network 192.168.200.0
netmask 255.255.255.0
broadcast 192.168.200.255
gateway 192.168.200.1
dns-nameservers 192.168.89.2
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
bridge_maxage 12

配置好后重启即可!!!

三、验证网桥(ping一下)
root@docker-test:~# ping 192.168.200.3
PING 192.168.200.3 (192.168.200.3) 56(84) bytes of data.
64 bytes from 192.168.200.3: icmp_seq=1 ttl=64 time=0.714 ms
64 bytes from 192.168.200.3: icmp_seq=2 ttl=64 time=0.549 ms

root@docker-test:~# ping 192.168.200.4
PING 192.168.200.4 (192.168.200.4) 56(84) bytes of data.
64 bytes from 192.168.200.4: icmp_seq=1 ttl=64 time=0.036 ms
64 bytes from 192.168.200.4: icmp_seq=2 ttl=64 time=0.078 ms

虚拟机a验证
root@docker-test:~# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.000c29f87a89    no        eth0    #网桥br0连接到物理网卡eth0
docker0        8000.56847afe9799    no        

虚拟机b验证:
bridge name    bridge id        STP enabled    interfaces
br0        8000.000c298c2483    no        eth0    #网桥br0连接到物理网卡eth0
docker0        8000.56847afe9799    no        

四、开始修改docker相关配置文件(将容器绑定到指定的网桥上)
虚拟机a操作:
vim /etc/default/docker 
在最后一行添加
DOCKER_OPTS="-b=br0"

虚拟机b操作:
vim /etc/default/docker 
在最后一行添加
DOCKER_OPTS="-b=br0"

修改完之后,重启docker服务
service docker restart

五、创建容器
虚拟机1操作:
docker run -dti -p 5000:5000 --name web1 training/webapp python app.py #创建并在后台运行容器
root@docker-test:~# docker ps -a
查看网卡 ifconfig命令, 发现多了一块刚才创建的容器的虚拟网卡:vethbe760cd
root@docker-test:~# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.000c29f87a89    no        eth0
                            vethbe760cd     
进入容器:
docker exec -ti web1 /bin/bash
进入容器后,ping物理网络,是否可以连通


虚拟机2操作:
docker run -dti -p 5000:5000 --name web2 training/webapp python app.py #创建并在后台运行容器
root@docker2:~# docker ps -a

查看网卡 ifconfig命令, 发现多了一块刚才创建的容器的虚拟网卡:veth09f70b6
root@docker2:~# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.000c298c2483    no        eth0
                            veth09f70b6
进入容器:
docker exec -ti web1 /bin/bash
进入容器后,ping物理网络,是否可以连通


注意:这样的实现方式,主要问题是需要知道容器所在物理主机(或者虚拟机)的IP地址

那么,如果用Ambassador容器机制,可以让互联的容器无需知道所在物理主机的IP地址即可互联



本文转自 TtrToby 51CTO博客,原文链接:http://blog.51cto.com/freshair/1958355

相关文章
|
9天前
|
Docker 容器
docker中创建自定义网络
【10月更文挑战第7天】
17 6
|
14天前
|
安全 NoSQL Redis
Docker自定义网络
Docker自定义网络
27 11
|
11天前
|
Docker 容器
docker中自定义网络
【10月更文挑战第5天】
12 3
|
18天前
|
Docker 容器
docker nginx-proxy 添加自定义https网站
docker nginx-proxy 添加自定义https网站
22 4
|
1月前
|
jenkins 持续交付 Docker
docker之自定义制作镜像(python程序)
docker之自定义制作镜像(python程序)
|
3天前
|
前端开发 Docker 容器
主机host服务器和Docker容器之间的文件互传方法汇总
Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。
|
1月前
|
Shell Linux Docker
自定义Docker网络
这篇文章介绍了如何使用Docker命令自定义网络,并通过创建和配置网络来实现容器间的通信。
33 6
自定义Docker网络
|
15天前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
57 0
|
18天前
|
数据可视化 应用服务中间件 nginx
Docker如何连接至本地私服Harbor中 推送镜像、查看镜像、下载镜像
Docker如何连接至本地私服Harbor中 推送镜像、查看镜像、下载镜像
40 0
|
20天前
|
Kubernetes 应用服务中间件 nginx
k8s学习--k8s集群使用容器镜像仓库Harbor
本文介绍了在CentOS 7.9环境下部署Harbor容器镜像仓库,并将其集成到Kubernetes集群的过程。环境中包含一台Master节点和两台Node节点,均已部署好K8s集群。首先详细讲述了在Harbor节点上安装Docker和docker-compose,接着通过下载Harbor离线安装包并配置相关参数完成Harbor的部署。随后介绍了如何通过secret和serviceaccount两种方式让Kubernetes集群使用Harbor作为镜像仓库,包括创建secret、配置节点、上传镜像以及创建Pod等步骤。最后验证了Pod能否成功从Harbor拉取镜像运行。