不同容器之间的通信可以借助于 pipework

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

不同容器之间的通信可以借助于 pipework 这个工具

pipework是由Docker的工程师Jérme Petazzoni开发的一个Docker网络配置工具,由200多行shell实现,方便易用。

下载地址:wgethttps://github.com/jpetazzo/pipework.git

1
2
[root@localhost src] # unzip pipework-master.zip
[root@localhost src] # cp -p pipework-master/pipework /usr/local/bin/

安装相应依赖软件

1
2
3
yum  install  bridge-utils -y    
[root@localhost src] # docker load < centos7http.tar
[root@localhost src] # yum -y install docker

配置桥接网络 

wKioL1mgNe-ycPdgAAAjwJeZ-ME166.png-wh_50

wKioL1mgNfCywf5HAAAKdo7uCag583.png-wh_50

1
[root@localhost src] # systemctl restart network

wKiom1mgNhKScuBTAABAOkJBNAo213.png-wh_50

 docker 的桥接指定为 br0,这样跨主机不同容器之间通过 pipework 新建 docker 容器的网卡桥接到 br0,这样跨主机容器之间就可以通信了。

1
2
3
[root@localhost src] # systemctl  stop docker
OPTIONS= '--selinux-enabled --log-driver=journald --signature-verification=false -b=br0'   添加
[root@localhost src] # systemctl start docker

pipework

 docker 默认桥接指定到了 br0,则最好在创建容器的时候加上--net=none,防止自动分配的 IP 在局域网中有冲突。

1
[root@localhost src] # pipework

使用镜像运行一个容器

1
2
[root@localhost src] # docker run -dit --net=none centos7:http
230f28d287a9013b7b660e1b57831c65b82c5338dfafdc16871fe6e0ccc7e150

注:默认不指定网卡设备名,则默认添加为 eth1

1
[root@localhost ~] # pipework  br0 -i eth0 230f28d287a 192.168.100.50/24@192.168.100.1

注:另外 pipework 不能添加静态路由,如果有需求则可以在 run 的时候加上 --privileged=true 权限在容器中手动添加,但这种安全性有缺陷,可以通过 ip netns 操作 密码默认是 admin

1
[root@localhost ~] # ssh admin@192.168.100.50

wKiom1mgNsXBx6BgAABDbhOuDSg035.png-wh_50

访问容器提供的web服务:

wKioL1mgNsbwTKGbAABI-nw2pp0109.png-wh_50

使用ip netns添加静态路由,避免创建容器使用--privileged=true选项造成一些不必要的安全问题:

1
2
3
4
[root@localhost ~] # docker inspect  --format="``.`State`.`Pid`" 230f28d287a9
19440
[root@localhost ~] # ln -s /proc/19440/ns/net /var/run/netns/19440
[root@localhost ~] #








     本文转自柴鑫旺 51CTO博客,原文链接:http://blog.51cto.com/chaixinwang/1959621 ,如需转载请自行联系原作者


相关文章
|
存储 传感器 物联网
如何在Docker中配置Mosquitto MQTT代理,以便在容器化环境中运行和管理MQTT通信
如何在Docker中配置Mosquitto MQTT代理,以便在容器化环境中运行和管理MQTT通信
1145 0
如何在Docker中配置Mosquitto MQTT代理,以便在容器化环境中运行和管理MQTT通信
|
6月前
|
负载均衡 网络协议 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基本概念和类型,包括桥接网络、宿主网络、覆盖网络和 Macvlan 网络等,并提供了创建、管理和配置自定义网络的实用命令。通过掌握这些知识,开发者可以构建更健壮和灵活的容器化应用,提高应用的可扩展性和安全性。
|
5月前
|
网络协议 网络安全 Docker
docker容器间无法通信
【10月更文挑战第4天】
375 3
|
5月前
|
监控 Kubernetes 测试技术
掌握Docker网络模式:构建高效容器通信
【10月更文挑战第3天】本文深入探讨了Docker的网络模式,包括它们的工作原理、使用场景以及如何配置和优化容器间的通信。希望能够帮助开发者在项目中有效地应用Docker网络模式,构建高效的容器化应用。
|
6月前
|
NoSQL 应用服务中间件 Redis
Docker跨宿主机容器通信-通过网络跨宿主机互联
这篇文章介绍了Docker容器跨宿主机通信的实现方法,包括Docker的四种网络模式(host、none、container、bridge)以及如何通过修改网络配置和添加路由规则来实现不同宿主机上的容器之间的互联。
450 0
Docker跨宿主机容器通信-通过网络跨宿主机互联
|
6月前
|
应用服务中间件 nginx Docker
Docker同一台宿主机容器通信-通过容器名称互联
本文详细介绍了如何通过容器名称实现同一宿主机上容器间的互联,并提供了实战案例。首先,文章解释了容器间通过自定义名称访问的原理,随后演示了创建并连接Tomcat与Nginx容器的具体步骤。此外,还讨论了配置中可能出现的问题及解决方案,包括避免硬编码IP地址和使用自定义容器别名来增强系统的灵活性与可维护性。通过这些实践,展示了如何高效地配置容器间通信,确保服务稳定可靠。
333 1
Docker同一台宿主机容器通信-通过容器名称互联
|
6月前
|
存储 Docker 容器
Docker中容器间的通信方式有哪些13
Docker中容器间的通信方式有哪些13
75 4
|
6月前
|
网络协议 安全 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基础知识,包括网络驱动、端口映射和命名等核心概念,并深入探讨了 Bridge、Host、Overlay 和 Macvlan 四种网络类型的特点及应用场景。此外,还提供了创建、连接、查看和删除自定义网络的命令示例,以及高级网络配置方法,如网络命名空间、DNS 解析和安全通信配置,帮助开发者构建更健壮的容器化应用。
|
9月前
|
Linux Docker 容器
蓝易云 - net.ipv4.ip_forward=0导致docker容器无法与外部通信
完成以上步骤后,Docker容器应该能够正常与外部通信了。
450 2
|
存储 数据库 网络架构
Docker网络模型:理解容器网络通信和连接
Docker网络模型:理解容器网络通信和连接
442 0