Docker----Docker容器跨网络互联

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker----Docker容器跨网络互联

(1)创建192.168.0.0网段的自定义网络

如下,指定网段为192.168.0.0/24,网关为192.168.0.1,网络类型为bridge,网络名称为mynet

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

创建后再次查看当前docker网络

[root@iZbp1flzt6x7pxmxfhmxeeZ ~]# docker network list
NETWORK ID     NAME      DRIVER    SCOPE
9741ca08001e   bridge    bridge    local
405291d91242   host      host      local
5fea02b3963d   mynet     bridge    local
c07d37e1f457   none      null      local
[root@iZbp1flzt6x7pxmxfhmxeeZ ~]#

(2)创建名为centos1的docker容器,并指定网络为mynet

docker run -it --name centos1 --net mynet centos

如下为创建后并进入,查看ip

[root@iZbp1flzt6x7pxmxfhmxeeZ ~]# docker run -it --name centos1 --net mynet centos
[root@e98a944fec1e /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
217: eth0@if218: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:c0:a8:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.0.2/16 brd 192.168.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@e98a944fec1e /]#

(3)创建名为centos2的docker容器,使用网络mynet

docker run -it --name centos2 --net mynet centos

如下,创建容器后进入并查看网络

[root@iZbp1flzt6x7pxmxfhmxeeZ ~]# docker run -it --name centos2 --net mynet centos
[root@e4b7913e1581 /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
219: eth0@if220: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:c0:a8:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.0.3/16 brd 192.168.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@e4b7913e1581 /]#

(4)创建192.169.0.0网段的自定义网络

如下,指定网段为192.169.0.0/24,网关为192.169.0.1,网络类型为bridge,网络名称为mynet2

docker network create --driver bridge --subnet 192.169.0.0/16 --gateway 192.169.0.1 mynet2

创建后再次查看当前docker网络

[root@iZbp1flzt6x7pxmxfhmxeeZ ~]# docker network list
NETWORK ID     NAME      DRIVER    SCOPE
9741ca08001e   bridge    bridge    local
405291d91242   host      host      local
5fea02b3963d   mynet     bridge    local
00cb484201d3   mynet2    bridge    local
c07d37e1f457   none      null      local
[root@iZbp1flzt6x7pxmxfhmxeeZ ~]#

(5)创建名为centos3的docker容器,并指定网络为mynet2

docker run -it --name centos3 --net mynet2 centos

如下为创建后并进入,查看ip

[root@iZbp1flzt6x7pxmxfhmxeeZ ~]# docker run -it --name centos3 --net mynet2 centos
[root@41f0ebf82add /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
226: eth0@if227: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:c0:a9:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.169.0.2/16 brd 192.169.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@41f0ebf82add /]#

(6)创建名为centos4的docker容器,使用网络mynet2

docker run -it --name centos4 --net mynet2 centos

如下,创建容器后进入并查看网络

[root@iZbp1flzt6x7pxmxfhmxeeZ ~]# docker run -it --name centos4 --net mynet2 centos
[root@6d94db61d337 /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
228: eth0@if229: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:c0:a9:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.169.0.3/16 brd 192.169.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@6d94db61d337 /]#

(7)验证网络联通性

  • 此时创建好的centos1和centos2在192.168.0.0网络里,centos3和centos4在192.169.0.0的网络里
  • 可以验证centos1中可以ping通centos2,但是无法和centos3容器ping通
[root@e98a944fec1e /]# ping centos2 -c 3
PING centos2 (192.168.0.3) 56(84) bytes of data.
64 bytes from centos2.mynet (192.168.0.3): icmp_seq=1 ttl=64 time=0.043 ms
64 bytes from centos2.mynet (192.168.0.3): icmp_seq=2 ttl=64 time=0.077 ms
64 bytes from centos2.mynet (192.168.0.3): icmp_seq=3 ttl=64 time=0.065 ms

--- centos2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.043/0.061/0.077/0.016 ms
[root@e98a944fec1e /]# ping centos3 -c 3
ping: centos3: Name or service not known
[root@e98a944fec1e /]#
  • 此时做到了centos1centos2 和centos3 centos3的隔离

(8)实现跨网络的容器互联

如下,设置将容器centos1与mynet2联通,此时centos1将可以与mynet2下所有的docker容器联通

docker network connect mynet2 centos1

如下,可以验证,centos1已经可以与mynet2网络下的centos3和centos4联通

[root@e98a944fec1e /]# ping centos3 -c 3
PING centos3 (192.169.0.2) 56(84) bytes of data.
64 bytes from centos3.mynet2 (192.169.0.2): icmp_seq=1 ttl=64 time=0.063 ms
64 bytes from centos3.mynet2 (192.169.0.2): icmp_seq=2 ttl=64 time=0.064 ms
64 bytes from centos3.mynet2 (192.169.0.2): icmp_seq=3 ttl=64 time=0.066 ms

--- centos3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.063/0.064/0.066/0.006 ms
[root@e98a944fec1e /]#
[root@e98a944fec1e /]# ping centos4 -c 3
PING centos4 (192.169.0.3) 56(84) bytes of data.
64 bytes from centos4.mynet2 (192.169.0.3): icmp_seq=1 ttl=64 time=0.080 ms
64 bytes from centos4.mynet2 (192.169.0.3): icmp_seq=2 ttl=64 time=0.062 ms
64 bytes from centos4.mynet2 (192.169.0.3): icmp_seq=3 ttl=64 time=0.066 ms

--- centos4 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.062/0.069/0.080/0.010 ms
[root@e98a944fec1e /]#

如下可以验证,此时centos2仍然与mynet2下的centos3和centos4不通

[root@e4b7913e1581 /]# ping centos3 -c 3
ping: centos3: Name or service not known
[root@e4b7913e1581 /]# ping centos4 -c 3
ping: centos4: Name or service not known
[root@e4b7913e1581 /]#
相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
目录
相关文章
|
3月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建
|
2月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
2月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
370 5
|
2月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
202 6
kde
|
2月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
kde
470 5
|
3月前
|
存储 Kubernetes 持续交付
为什么Docker容器化改变了开发与部署?
为什么Docker容器化改变了开发与部署?
|
3月前
|
Kubernetes Devops Docker
Kubernetes 和 Docker Swarm:现代 DevOps 的理想容器编排工具
本指南深入解析 Kubernetes 与 Docker Swarm 两大主流容器编排工具,涵盖安装、架构、网络、监控等核心维度,助您根据团队能力与业务需求精准选型,把握云原生时代的技术主动权。
299 1