Docker应用-自定义网络连接

Docker网络

文章目录

  • Docker网络
    • 网络的基础配置
    • 自定义网络
    • 网络连通

网络的基础配置

大量的互联网应用服务包括多个服务组件,这往往需要多个容器之间通过网络通信进行互相配合。

目前Docker提供了映射容器端口到宿主机主机和容器互联机制来为容器提供网络服务:

  1. 使用端口映射机制来将容器内应用服务提供给外部网络(在之前的博客已经提到过)
  2. 通过容器互联系统让多个容器之间进行快捷的网络通信

对于一个微服务而言,database uri=ip,如果docker容器重启那么ip也会更改,所以我们希望可以通过名字来访问容器

举个例子:

# 启动两个tomcat容器
[root@VM-4-17-centos home]# docker run -d -P --name tomcat01 tomcat
[root@VM-4-17-centos home]# docker run -d -P --name tomcat02 tomcat
# 直接通过ping名称的方式进行测试
[root@VM-4-17-centos home]# docker exec -it tomcat02 ping tomcat01

在这里插入图片描述

如何解决这个问题docker提供了方案。容器的连接(link),它会在源和接受容器直接建立一个隧道。

# 通过link的方式再启动一个容器
[root@VM-4-17-centos home]# docker run -d -P --name tomcat04 --link tomcat02 tomcat
#再尝试ping一下,可以解决
[root@VM-4-17-centos tomcat]# docker exec -it tomcat04 ping tomcat02
PING tomcat02 (172.17.0.3) 56(84) bytes of data.
64 bytes from tomcat02 (172.17.0.3): icmp_seq=1 ttl=64 time=0.117 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=3 ttl=64 time=0.081 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=4 ttl=64 time=0.064 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=5 ttl=64 time=0.076 ms

上面我们可以看到tomcat04可以ping通tomcat02,但是返回来是不行的,具体原因进入容器查看

[root@VM-4-17-centos tomcat]# docker exec -it tomcat04 cat /etc/hosts

在这里插入图片描述

当我们使用–link时源容器会在hosts文件中绑定目标容器的ip地址,反观tomcat02是没有的

在这里插入图片描述

但是在生产实际中不建议使用–link。

自定义网络

查看所有的docker网络

在这里插入图片描述

网络模式

  1. bridge:桥接模式(默认)
  2. none:不配置网络
  3. host:和宿主机共享网络
  4. container:容器网络连通

自己创建一个docker网络

# --subnet是子网掩码
# --driver是驱动模式,默认是bridge
# --gateway是网关
[root@VM-4-17-centos tomcat]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet# 查看
[root@VM-4-17-centos tomcat]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
a78167e0dd78   bridge    bridge    local
5780db889845   host      host      local
b97d4c33f32a   mynet     bridge    local
b2642377e6c3   none      null      local# docker network inspect mynet查看具体信息

在这里插入图片描述

不适用–link启动tomcat

#启动两个tomcat容器
[root@VM-4-17-centos tomcat]# docker run -d -P --name tomcat01 --net mynet diytomcat
[root@VM-4-17-centos tomcat]# docker run -d -P --name tomcat02 --net mynet diytomcat#再次查看网络信息

在这里插入图片描述

启动完之后再尝试ping连接

#通过ip
[root@VM-4-17-centos tomcat]# docker exec -it tomcat01 ping 192.168.0.3
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=0.107 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=64 time=0.079 ms
64 bytes from 192.168.0.3: icmp_seq=3 ttl=64 time=0.080 ms
64 bytes from 192.168.0.3: icmp_seq=4 ttl=64 time=0.078 ms
#通过名称
[root@VM-4-17-centos tomcat]# docker exec -it tomcat01 ping tomcat02
PING tomcat02 (192.168.0.3) 56(84) bytes of data.
64 bytes from tomcat02.mynet (192.168.0.3): icmp_seq=1 ttl=64 time=0.069 ms
64 bytes from tomcat02.mynet (192.168.0.3): icmp_seq=2 ttl=64 time=0.078 ms
64 bytes from tomcat02.mynet (192.168.0.3): icmp_seq=3 ttl=64 time=0.082 ms
64 bytes from tomcat02.mynet (192.168.0.3): icmp_seq=4 ttl=64 time=0.078 ms

通过自定义网络docker帮我们维护好了对应的关系,这样做有一个好处就是不同的集群使用不同的网络,保证集群的安全。

网络连通

# 通过docker默认网卡启动两个tomcat容器
[root@VM-4-17-centos tomcat]# docker run -d -P --name tomcatd01 tomcat
[root@VM-4-17-centos tomcat]# docker run -d -P --name tomcatd02 tomcat

如何将tomcatd01和tomcat01连通起来?

在这里插入图片描述

# 使用docker network connect
[root@VM-4-17-centos tomcat]# docker network connect --helpUsage:  docker network connect [OPTIONS] NETWORK CONTAINERConnect a container to a networkOptions:--alias strings           Add network-scoped alias for the container--driver-opt strings      driver options for the network--ip string               IPv4 address (e.g., "172.30.100.104")--ip6 string              IPv6 address (e.g., "2001:db8::33")--link list               Add link to another container--link-local-ip strings   Add a link-local address for the container

打通tomcatd01 --> mynet

# 建立连接
[root@VM-4-17-centos tomcat]# docker network connect mynet tomcatd01
# 查看mynet信息
[root@VM-4-17-centos tomcat]# docker network inspect mynet

在这里插入图片描述

连通的最终效果就是将tomcatd01放到了mynet网络下,这就是所谓的一个容器两个ip。

尝试ping连接tomcat01

[root@VM-4-17-centos tomcat]# docker exec -it tomcatd01 ping tomcat01
PING tomcat01 (192.168.0.2) 56(84) bytes of data.
64 bytes from tomcat01.mynet (192.168.0.2): icmp_seq=1 ttl=64 time=0.095 ms
64 bytes from tomcat01.mynet (192.168.0.2): icmp_seq=2 ttl=64 time=0.077 ms
64 bytes from tomcat01.mynet (192.168.0.2): icmp_seq=3 ttl=64 time=0.077 ms
64 bytes from tomcat01.mynet (192.168.0.2): icmp_seq=4 ttl=64 time=0.077 ms

64 time=0.077 ms
64 bytes from tomcat01.mynet (192.168.0.2): icmp_seq=3 ttl=64 time=0.077 ms
64 bytes from tomcat01.mynet (192.168.0.2): icmp_seq=4 ttl=64 time=0.077 ms


假如我们需要跨网络操作,就需要使用docker connect连通,如上操作即可!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/646296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件功能测试如何确定测试需求?CMA、CNAS软件测试报告获取

软件功能测试是为了验证软件的功能是否按照设计要求正常工作的过程,可以确保软件的质量,提高用户体验,也是保证软件安全和可靠性的重要一环。我们需要从多个角度对软件的各个功能模块进行测试,确保每个功能都能正常运行&#xff0…

抖捧AI实景自动直播怎么玩

​在如今的全民直播时代,直播已经成为了众多实体店、品牌方所刚需的技能,但是大多数都不具备太多的直播能力 ,这个时候实景自动直播就应运而生,但是很多人都没有想清楚,AI实景自动直播,到底适不适合自己用呢…

蓝桥杯(Python)每日练Day5

题目 OJ1229 题目分析 题目完全符合栈的特征,后进先出。如果能够熟练使用列表的9种方法那么这道题很容易解出。 题解 a[]#存衣服 nint(input()) for i in range(n):llist(input().split())#判断每一步的操作if len(l[0])2:a.append(l[1])else:while a.pop()!l…

本地部署Tomcat开源服务器并结合内网穿透远程访问

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 前言 Tomcat作为一个轻量级的服务器,不仅名字很有趣&#xff0…

Obsidian笔记软件结合cpolar实现安卓移动端远程本地群晖WebDAV数据同步

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【Kubernetes】深入了解Kubernetes(K8s):现代容器编排的引领者

欢迎来到英杰社区: https://bbs.csdn.net/topics/617804998 欢迎来到阿Q社区: https://bbs.csdn.net/topics/617897397 作者简介: 辭七七,目前大二,正在学习C/C,Java,Python等 作者主页&#xf…

JavaEE之多线程编程:4. 线程安全(重点!!!)

文章目录 一、观察线程不安全二、线程安全的概念三、线程不安全的原因1. 关于线程不安全的解释1. 抢占式执行2. 修改共享数据3. 原子性4. 可见性5. 指令重排序问题 四、解决之前的线程不安全的问题五、synchronized 关键字(两个线程同时修改一个变量)1. …

python基础教程:属性查询顺序,数据描述符

嗨喽,大家好呀~这里是爱看美女的茜茜呐 数据描述符,属性查找优先级 如果在一个类中定义了 __get__() , __set__(), __delete__() 这三种方法之一,那么这个类是一个描述符。 描述符分成两种: 如果这种类只定义了 __get__ 方法&…

核桃的数量---蓝桥杯

思路&#xff1a; 题目所代表的意思就是a,b,c这三个必须是核桃数量的因子&#xff0c;即a,b,c三个的最小公倍数 #include <iostream> #include <algorithm> using namespace std; // int main() { int a,b,c;cin>>a>>b>>c;int da*b/__gcd(a,b…

基于Django的计算机编程技术学习与服务平台

临近毕业&#xff0c;又到了赶毕设的时候了&#xff0c;本次介绍分享一下自己的毕业设计项目吧。 项目主题&#xff1a;基于Django的计算机技术编程技术学习与服务平台 实现功能&#xff1a; 1.登入&#xff1a;用户的登陆注册 2.Python教程&#xff1a;实现用户的Python技…

MacOS 无法ping 通 github.com 解决方案

ping github.com 会显示请求超时&#xff1a; PING github.com (192.30.253.112): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 Request timeout for icmp_seq 2 Request timeout for icmp_seq 3 Request timeout for icmp_seq 4 Request …

无刷电机篇(一)直流无刷电机(BLDC)介绍

目录 01 直流无刷电机介绍 直流无刷电机内部结构 转子描述 定子描述 02 直流无刷电机分类 直流无刷电机分类描述 内、外转子电机描述 内、外转子电机区别 03 直流无刷电机参数 无刷电机参数 04 文章总结 大家好&#xff0c;这里是程序员杰克。一名平平无奇的嵌入式软…

PCL 高斯投影正算:大地坐标转高斯投影坐标(C++详细过程版)

目录 一、算法原理二、代码实现三、结果展示四、测试数据PCL 高斯投影正算:大地坐标转高斯投影坐标(C++详细过程版)由CSDN点云侠原创。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 二、代码实现 头文件及读取保存函数见:

深度学习基础之数据操作

深度学习中最常用的数据是张量&#xff0c;对张量进行操作是进行深度学习的基础。以下是对张量进行的一些操作&#xff1a; 首先我们需要先导入相关的张量库torch。 元素构造&#xff08;初始化&#xff09; 使用arange创造一个行向量&#xff0c;也就是0轴&#xff08;0维&a…

arco design table遇到的一些问题

问题1:不知情就成了树形table table中不知道为啥就多了个树形加号在前面,查找问题后发现,是后端返回的数据中有children,框架中默认对这个参数做了树形结构。 解决办法: 当时没找到取消或者修改字段的属性或方法,就将此字段去掉,并将内容clone到childData。 问题2:c…

Java如何对OSS存储引擎的Bucket进行删除【OSS学习】

在前面学会了如何对OSS里面的Bucket进行创建&#xff1a;Java如何对OSS存储引擎的Bucket进行创建-CSDN博客 接下来&#xff0c;记录一下如何删除Bucket存储空间 目录 1、看看OSS&#xff1a; 2、代码&#xff1a; 3、运行效果&#xff1a; 1、看看OSS&#xff1a; 我准备将…

opencv009 滤波器01(卷积)

图像卷积操作&#xff08;convolution&#xff09;&#xff0c;或称为核操作&#xff08;kernel&#xff09;&#xff0c;是进行图像处理的一种常用手段&#xff0c; 图像卷积操作的目的是利用像素点和其邻域像素之前的空间关系&#xff0c;通过加权求和的操作&#xff0c;实现…

可pin to pin替代TI DRV8872的GLOBALCHIP直流电机驱动芯片GC8872,低成本、宽电压,内置电荷泵,短地短电源保护,限流

在现如今电机驱动芯片处于持续涨价的状态下&#xff0c;并且供货期货期长&#xff0c;偶尔缺货的状态下。为了降低设计成本&#xff0c;第一时间设计出优秀的产品占据市场高位。我这边推荐使用浙江GLOBALCHIP国产电机驱动芯片进行替换设计。供货稳定、价格低廉。GC8872是GLOBAL…

win7虚拟机安装VMware Tools失败,主机远程虚拟机解决

情况描述:安装完win732位虚拟机后,VMWare Tools安装失败,这时传文件就成了问题;所以才有了此文档,需要通过主机直接远程到虚拟机进行文件传输,网上的说明不全,导致摸索了一番才解决此问题; 首先,下载win732补丁; 下载地址:Microsoft Update Catalog首先,虚拟机需要…

【数据结构】 链队列的基本操作 (C语言版)

目录 一、链队列 1、链栈的定义&#xff1a; 2、链栈的优缺点&#xff1a; 二、链队列的基本操作算法&#xff08;C语言&#xff09; 1、宏定义 2、创建结构体 3、链栈的初始化 4、链队列的入队 5、链队列的出队 6、取链队列的对头元素 7、链队列的销毁 8、链…