`

Docker网络下-自定义网络实战

 
阅读更多

通过前面两篇的学习,我们对docker网络及四大网络类型都了解了。本文,咱们就来学习docker的自定义网络。我们为什么需要自定义网络呢?是为了让各个主机分门别类,井井有条。方便关联,使得网络之间可以通过服务名进行通信。为什么在容器中,我们要通过服务名进行通信呢?那是因为,docker容器内部的IP是有可能发生变化的。我们使用自定义网络,就是解决容器IP变动时候可以通过服务名直接网络通信而不受到影响。

我们先来看看没有使用自定义网络前:

在上一篇文章中,我们案例使用的tomcat81和tomcat82.我们启动这两个容器。使用命令:

docker run -d -p 8081:8080 --name tomcat81 billygoo/tomcat-jdk8

0589083de24f9e6b29882135cf62fad9.png

将两个Tomcat都启动,我们docker ps下,看看

a736d4cce943b524106482a6f51f3846.png

OK,两个Tomcat都启动成功。我们分别进入各自容器实例内部。使用命令 docker exec -it tomcat81 bash。进入服务之后,我们来测试两种情况。1:通过IP两个容器相关ping;2:通过服务名进行相关ping

1:使用172.17.0.3去ping 172.17.0.2.如下图:

9469c085f57a57e623d0a35310b90743.png

我们发现,通过IP,两个容器实例是可以相互ping通的。但是,我们前面说过,容器内的实例ip会发生变化的。假设,服务ip发生了变化,可能就ping不同了。那能不能按照服务名来ping呢(就像我们使用restTemplate试试,使用服务名进行请求一样)。我们来测试第二种情况。

通过服务名相互ping:

6da2d2f05e800c34f06acc8d65b5cebb.png

我们发现通过服务名字ping是相互不能ping的。所以,在使用自定义网络之前,我们可以得到如下结论:通过IP容器间可以ping通,但是不能通过服务名进行ping。在实际生产中,我们怎么可能将ip写死呢?如果将ip写死,是很危险的。尤其是在docker服务容器之间,用IP通信,更危险

我们再来看看使用自定义网络后能不能解决通过服务名ping的问题。

步骤如下:

自定义桥接网络。注意自定义网络默认使用的是桥接网络bridge;

1:新建自定义网络

2:将新建容器加入上一步新建的自定义网络

3:使用服务名字,相互ping进行测试

1:自定义网络:

先查看当前的网络情况。命令:docker network create 自定义网络名称

我们可以通过docker network ls 查看现有网络

4f257011dfe769c9ce1812dc5e038989.png

2:新建的容器加入新建的自定义网络

将容器加入指定网络。在启动容器命令中加入:--network 网络名称 即可。用在我们案例中的话,启动tomcat8081的命令就是

docker run -d -p 8081:8080 --network zzyy_network  --name tomcat81 billygoo/tomcat-jdk8

如下图:

43eceaa70f12cc2622369904fab0b402.png

3:使用服务名进行ping

f255008d6bbd5090566e0dabbf3484ed.png

工作总结:

自定义网络本身就维护好了主机名和IP的对应关系。将容器加入自定义网络中之后,可以通过ip进行相关ping,也可以通过服务名相关ping。

 

结束语

如操作有问题欢迎去 我的 个人博客(www.kaigejava.com)留言或者   微信公众号(凯哥Java)留言交流哦。

 

本系列教程直通车

直通车,本系列教程已发布文章,快速到达,《Docker学习系列》教程已经发布的内容如下:

【图文教程】Windows11下安装Docker Desktop

【填坑】在windows系统下安装Docker Desktop后迁移镜像位置

【Docker学习系列】Docker学习1-docker安装

【Docker学习系列】Docker学习2-docker设置镜像加速器

【Docker学习系列】Docker学习3-docker的run命令干了什么?docker为什么比虚拟机快?

【Docker学习系列】Docker学习2-常用命令之启动命令和镜像命令

【Docker学习系列】Docker学习系列3:常用命令之容器命令

【Docker学习系列】Docker学习4-常用命令之重要的容器命令

【Docker教程系列】Docker学习5-Docker镜像理解

【Docker教程系列】Docker学习6-Docker镜像commit操作案例

【Docker学习教程系列】7-如何将本地的Docker镜像发布到阿里云

【Docker学习教程系列】8-如何将本地的Docker镜像发布到公司镜像服务器上?

「Docker学习系列教程」9-Docker容器数据卷介绍

「Docker学习系列教程」10-Docker容器数据卷案例

Docker学习11-Docker常规方式安装软件

「Docker学习系列教程」基础篇小总结及高级篇预告

docker高级篇1-dockeran安装mysql主从复制

docker高级篇2-分布式存储之三种算法

docker高级篇第二章-分布式存储之实战案例:3主3从redis集群扩容配置

docker高级篇第二章-分布式存储之实战案例:主从容错切换迁移案例

Docker高级:Redis集群实战!4主4从缩容到3主3从,怎么处理?

Dockerfile介绍及常用保留指令

docker高级篇第三章-dockerfile案例之制作自己的centos镜像

docker的虚悬镜像是什么?

docker高级篇:实战-自己开发的微服务怎么在docker上面运行?

Docker网络中篇-docker网络的四种类型

 

【Docker学习教程系列汇总】笔记及遇到问题解决文章

 

凯哥自己开发的,领取外卖、打车、咖啡、买菜、各大电商的优惠券的公¥众¥号。如下图:

527c8a82983e56a30f4299fc76e1956a.png

大家好,我是凯哥Java(kaigejava),乐于分享,每日更新技术文章,欢迎大家关注“凯哥Java”,及时了解更多。让我们一起学Java。也欢迎大家有事没事就来和凯哥聊聊~~~

 

分享到:
评论

相关推荐

    实战Docker到Kubernetes技术系列 文档.rar

    03 Docker实战之自定义容器镜像 04 Docker实战之容器互联实战 05 Docker实战之容器网络机制(上) 06Dcke实战之容器网络机制(下) 07. Docker图形化管理和监控 08 Kubernetes横空出世背后的秘密 09 Kubernetes架构深度...

    Docker和K8S实战培训文档和实验手册.rar

    03 Docker实战之自定义容器镜像 04 Docker实战之容器互联实战 05 Docker实战之容器网络机制(上) 06 Docke实战之容器网络机制(下) 07 Docker图形化管理和监控 08 Kubernetes横空出世背后的秘密 9.Kubernetes构深度...

    docker实战之容器互联实战

    ### Docker实战之容器互联实战 #### 一、概述 Docker作为一款开源的应用容器引擎,其核心在于通过轻量级的容器技术实现应用的高效部署与管理。在Docker环境中,容器互联是一项重要的功能,它使得不同的容器之间...

    实战Docker到Kubernetes技术系列视频教程.zip

    06.Docker实战之容器网络机制(下) 07.Docker图形化管理和监控 08.Kubernetes横空出世背后的秘密 09.Kubernetes架构深度解析 10.Kubernets集群入门 11.Kubernetes集群部署实践 12.Kubernetes的分布式网络实践 13....

    实战Docker到Kubernetes技术系列PPT教程(共14个PPT,Docker介绍的非常详细).zip

    01.为什么你需要学习Docker 02.Docker实战之容器基础命令系列 03.Docker实战之自定义容器镜像 04.Docker实战之容器互联实战 05.Docker实战之容器网络机制(上) 06.Docker实战之容器网络机制(下) 07.Docker图形化...

    实战Docker到Kubernetes技术视频.zip

    06.Docker实战之容器网络机制(下) 07.Docker图形化管理和监控 08.Kubernetes横空出世背后的秘密 09.Kubernetes架构深度解析 10.Kubernets集群入门 11.Kubernetes集群部署实践 12.Kubernetes的分布式网络实践 13....

    Docker和K8S实战培训视频含培训文档.rar

    03 Docker实战之自定义容器镜像 04 Docker实战之容器互联实战 05 Docker实战之容器网络机制(上) 06 Docke实战之容器网络机制(下) 07 Docker图形化管理和监控 08 Kubernetes横空出世背后的秘密 9.Kubernetes构深度...

    Docker容器核心实践之道 从入门到高级 视频.zip

    第3章 Docker核心必备之自定义镜像实战 1构建自定义镜像的意义与应用场景 2Commit构建自定义镜 3核心必备知识之Dockerfile构建镜像实战 4Docker核心知识之镜像分层结构剖析 ..... 第4章 Docker核心知识之网络模式与...

    docker安装redis4.0.10-单点持久化详细笔记

    创建配置文件目录 /data/redis/conf,并创建自定义配置文件 redis.conf。 [root@localhost ~]# mkdir -p /data/redis/conf [root@localhost ~]# vim /data/redis/conf/redis.conf 配置文件 redis.conf 中包含了 ...

    自定义view实战---五子棋gobang.zip

    双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音...

    【docker配置使用】docker配置使用教程

    Docker配置使用教程是一份全面且引人入胜的资源,旨在通过实战演练和详细的操作指导,帮助初学者和经验丰富的开发者有效掌握Docker的配置和使用技巧。 Docker作为一个轻量级的容器化平台,极大地简化了软件的部署、...

    prometheus监控docker容器详细资料—超详细,超全面(带文档和相关软件包)

    这个压缩包可能包含了Prometheus 2.35.0版本的安装包、配置示例、Docker容器监控的文档以及如何在Linux环境下部署和使用Prometheus的详细步骤。通过学习这些资料,你可以深入了解如何在Docker环境中有效利用...

    Docker应用视频教程.zip

    06.Docker实战之容器网络机制(下) 07.Docker图形化管理和监控 08.Kubernetes横空出世背后的秘密 09.Kubernetes架构深度解析 10.Kubernets集群入门 11.Kubernetes集群部署实践 12.Kubernetes的分布式网络实践 13....

    Hadoop实战-附目录

    - **Combiner的使用**:介绍Combiner的作用及其实现方法,以减少网络传输的数据量。 ##### 3.3 Hive实战 - **表结构设计**:学习如何设计Hive表结构,包括字段类型选择、分区表与桶表的区别等。 - **SQL查询语句**...

    基于javatcpsocket通信的拆包和装包源码-seckill-practice:redis-秒杀项目实战

    关于docker通信方式的redis集群(link,自定义network及其原理) 分布式锁的实现 redis集群+sentinel高可用 布隆过滤 标志位防止流量倾斜,缓存预热防止缓存穿透 redis缓存秒杀 异步写入数据库 redis知识 redis主从集群...

    Spring Boot-实战

    2. **核心概念**:深入解析Spring Boot的自动配置原理,以及如何自定义配置以满足特定需求。 3. **Web开发**:包括使用Spring MVC开发RESTful API,处理HTTP请求,使用模板引擎(如Thymeleaf)进行视图渲染,以及...

    Timlong-SpringBoot-实战开发笔记.zip

    - Spring Boot自动配置是通过`spring-boot-autoconfigure`模块实现的,根据类路径下存在的jar来自动配置相应的Bean。 6. **Actuator** - Spring Boot Actuator提供了许多端点来监控和管理应用,例如健康检查、...

    SpringBoot实战-清晰

    - **Docker化部署**:Spring Boot的应用非常适合Docker容器化,便于实现持续集成和持续部署。 5. **测试** - **单元测试**:Spring Boot提供了方便的测试注解,如`@SpringBootTest`,可以快速搭建测试环境。 - *...

Global site tag (gtag.js) - Google Analytics