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

本文涉及的产品
容器镜像服务 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天前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
29 3
实战~如何组织一个多容器项目docker-compose
|
25天前
|
Prometheus 监控 Cloud Native
如何使用Prometheus监控Docker Swarm集群的资源使用情况?
还可以根据实际需求进行进一步的配置和优化,如设置告警规则,当资源使用超出阈值时及时发出警报。通过这些步骤,能够有效地使用 Prometheus 对 Docker Swarm 集群的资源进行监控和管理。
43 8
|
25天前
|
Prometheus 监控 Cloud Native
如何监控Docker Swarm集群的性能?
如何监控Docker Swarm集群的性能?
82 8
|
25天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
64 7
|
25天前
|
监控 Docker 容器
Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项
本文深入探讨了Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项,旨在帮助用户高效管理集群资源,适应业务变化,确保服务稳定性和资源优化。
47 6
|
27天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
74 0
|
17天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
156 77
|
25天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
3天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
28 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
18天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
60 3