十五、Docker 网络

news2024/12/26 11:04:43

1、概述

        Docker 容器和服务如此强大的原因之一是您可以将它们连接在一起,或将它们连接到非 Docker 工作负载。Docker 容器和服务甚至不需要知道它们部署在 Docker 上,或者它们的对等体是否也是 Docker 工作负载。无论您的 Docker 主机运行 Linux、Windows 还是两者的混合体,您都可以使用 Docker 以与平台无关的方式管理它们。

        上述描述是Docker官网描述 Docker network的。说白了,Docker network 可以连接多个容器,使容器之间可以互相通信,并且是容器与Docker宿主机之前通信的桥梁。所以说Docker network在Docker体系中至关重要。

2、Docker network 相关命令

帮助文档

命令说明
docker network ls列出当前所有的网络
 docker network create 网络名称        创建新的网络
docker network rm 网络名称        删除已创建网络
docker network inspect 网络名称查看网络信息
docker network prune删除所有不用的网络
docker network connect [OPTIONS] NETWORK CONTAINER连接一个容器和网络
docker network disconnect [OPTIONS] NETWORK CONTAINER断开连接一个容器和网络

3、主流网络模式详解

docker默认创建了3个网络,我们分别介绍下3种网络

docker启动后,会在宿主机上创建一个docker0的虚拟网桥

3.1、bridge 模式

        bridge模式是docker中默认的网络,它会为每个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,默认为改模式。

它就像个交换机,负责宿主机到容器之间的联通。

使用--network bridge指定,默认使用docker0

 docker run -it centos:7 /bin/bash  等价于  docker run -it --network bridge  centos:7 /bin/bash

注意:这种模式官网是不推荐使用的,咱们看下反例

查看两个容器IP

这个时候突然centos01挂了,我们又启动了一个centos03,咱们再看看IP变化

 咱们可以看出原本属于centos01的IP 172.17.0.2 被分配给centos3容器了,这在传统的服务器上是不可思议的。

我们的微服务项目连接redis、mysql等中间件都是以IP访问的,这个时候如果部署到docker还是以IP访问,岂不是乱套了。

虽然IP变了,但是容器名称不会变化,所以springboot项目部署到docker中连接redis、mysql等中间件要以容器名称连接调用

3.2、host 模式

        host模式,容器不会虚拟出自己的网卡、配置自己的IP等,而是使用宿主机IP和端口。

使用--network host 指定

 

 注意:因为和宿主机公用端口等,此时容器再指定不同的映射端口就会有警告,咱们以tomcat8 为例验证

3.3、none模式

        host模式,容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair和网桥连接、IP等

使用--network none指定

 禁用网络功能,只有lo标识(就是127.0.0.1表示本地回环)

3.4、container模式

        container模式,新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。

3.5、自定义网络(推荐)

在3.1中我们说过 bridge模式下,容器的IP可能会变化,最好就别用IP通行,直接通过容器名称通讯。

咱们分两拨验证

  • bridge 模式下,创建两个centos7容器,分别是 centos01和centos02,然后进入各自容器用IP和容器名称分别ping对方看看效果

命令:

docker run -it --name centos01 centos:7 /bin/bash
docker run -it --name centos02 centos:7 /bin/bash

查看各自容器IP

 进入各自容器ping对方

 

结论:在bridge网络模式下,容器之间可以以IP通信,不能以容器名称通信 

  • 自定义网络模式下,创建两个centos7容器,分别是 centos01和centos02,然后进入各自容器用IP和容器名称分别ping对方看看效果

先创建自定义网络my_net:

命令:

docker run -it --name centos01 --network my_net centos:7 /bin/bash
docker run -it --name centos02 --network my_net centos:7 /bin/bash

创建并查看各自IP

 进入各自容器ping对方

 结论:在自定义网络模式下,容器之间可以不以IP通信,而是以容器名称通信(这种方式也是生产环境所推荐的)

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

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

相关文章

Doo Prime 为泰国 SOS 儿童村送温暖,公益有起点爱心无疆界

一年一度的圣诞节即将来临,在这欢乐的时刻, Doo Prime 荣幸地宣布 ,向泰国 SOS 儿童村捐赠了 35 万泰铢 ( 约合 1.23 万美元 ),作为泰国南部城市合艾府 SOS 儿童村的房屋翻修费用。 Doo Prime 希望 SOS 儿童村的孩子们都能在温馨…

【小程序】网络数据请求

目录 1. 小程序中网络数据请求的限制 2. 配置 request 合法域名 3. 发起 GET 请求 4. 发起 POST 请求 5. 在页面刚加载时请求数据 5. 跳过 request 合法域名校验 6. 关于跨域和 Ajax 的说明 1. 小程序中网络数据请求的限制 出于安全性方面的考虑,小程序官方…

【目标检测】Objects as Points

目录概述细节anchor-base vs anchor free网络结构标注损失函数学习资料概述 本文是一个anchor-free的目标检测算法。 【2019】【CenterNet】 研究的问题: 如何更好地将目标检测问题建模为关键点检测问题 提出的方法: 一个简单高效的目标检测方法Cent…

抖音年货节增长秘籍:横向做阵地,纵向定节奏,提前深种草

抖音好物年货节即将到来,对于品牌来说,这将是新一年首次生意爆发的机会。为了更好的融入抖音电商生态,做好数字化经营主阵地,品牌面临多个新挑战: 大促Bigday流量费用高,品牌怎样更高效获取流量&#xff1f…

数据库设计说明书(GB8567——88)基于协同的在线表格forture-sheet

数据库设计说明书(GB8567——88) 1引言 1.1编写目的 数据库的设计是为了以后编码、测试以及维护阶段的后台数据的存储做准备。应用于系统开发前期,为后期数据库设计指引方向。 预期的读者:系统开发人员、系统测试人员和系统维…

瑞昱rtl819x-SDK-v3.4.14b的watchdog分析

watchdog 看门狗,又叫watchdog timer,是一个定时器电路,一般有一个输入,叫喂狗或踢狗;一个输出到MCU 的 RST 端,MCU 正常工作的时候,每隔一段时间输出一个信号到喂狗端,给 WDT 清零…

SQL注入渗透与攻防(八)之延时注入

目录 基于时间的SQL盲注 - 延时注入 案列演示 基于时间的SQL盲注 - 延时注入 关于延时注入的使用场景一般在我们测试的注入点没有报错信息又没有回显点的情况下进行的。通过对于时间的延时判断来猜解数据。在实战过程中并不推荐大家通过延时注入去判断数据库,因为…

转行做程序员,难吗

在互联网急速发展的这几年里,程序员这个职业,成为了很多人的心之所向。虽然高薪背后往往伴随着高强度的工作节奏和压力,但是也不妨碍大量的人在编程培训或者自学编程的道路上前仆后继。 那么转行程序员真的容易吗?下面就跟大家分享…

无需编程即可将chatgpt接入自己的微信公众号

ChatGpt是openai推出的GPT3文本生成机器人。该机器人主要完成文本生成相关任务。机器人可以自主进行写作、翻译、修改语法、角色扮演的,甚至编写程序。网上有很多接入方法,大部份需要编程,并且需要注册openai账号获取appkey。本文所介绍的方法…

datagridview如何根据不同的按钮显示不同的表

以我设计的为例: 双击按钮,会自动创建三个事件 以第一个按钮为例:在其中添加如下代码 SqlConnection sqlcon new SqlConnection(); sqlcon.ConnectionString "";//双引号内填入你的数据库连接字符 sqlcon.Open(); string sql &…

UG NX二次开发(C#)-获取模型文件的预览图片

文章目录 1.前言2. 模型文件预览图介绍3.采用二次开发的方法获取模型的预览图4.验证1.前言 UG NX保持的prt文件中保存了模型的预览位图,但是采用UG NX二次开发时不能直接提取出来,本文讲解一下将prt文件的预览位图提取出来并单独保存。 2. 模型文件预览图介绍 如果我们在UG…

【字体】写代码编程字体展示推荐

写代码编程字体展示推荐 零、适合写代码编程的字体 什么样的字体适合写代码用?一般来讲,写代码的字体要求字母的宽度一致、轮廓清晰美观、l1i,0oO易于分辨、清晰易分辨的标点等,甚至有强迫症的还要中文与英文严格2:1对齐。下面收…

机器学习 | 决策树

一.基本原理 决策树是一种树状结构模型,每一个根节点都是一个特征判断,它的叶子节点就是它的特征分类结果 决策树是一种分类和回归的基本模型,是一棵树的形式,其实就是将平时所说的 if-else 语句构建成了树的形式。决策树主要包…

使用 SQL 别名简化查询并自定义结果

别名能够在不影响基础表或视图的情况下临时重命名表或列。作为大多数甚至所有关系数据库管理系统都支持的 SQL 功能,别名是简化查询和/或自定义结果集中列标题的好方法。在这篇文章中,我们将使用 Navicat Premium 16 来完成这两项工作。 重命名列 许多…

带宽消耗以及Swap(上)

今天我们来看一个真实的案例。事情是这样的,之前有人在微信上问我一个问题,这个问题的现象很典型:典型的 TPS 上不去,响应时间增加,资源用不上。 大概的情况是这样的:有两台 4C8G 的服务器,一台服务器上有 2 个 Tomcat,一台服务器上是 DB。压测的混合场景有 4 个功能模…

【验证码逆向专栏】某验三代滑块验证码逆向分析

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 本文章未经许可禁止转载…

k8s教程(20)-pod之定时任务

文章目录01 引言02 基本语法03 案例04 文末01 引言 声明:本文为《Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)》的读书笔记 Kubernetes从1.5版本开始增加了一种新类型的Job,即类似Linux Cron的定时任务…

SpringMVC、SSM整合

SpringMVC的工作原理(底层Servlet的工作流程) DispatcherServletHandlerMapping ,返回值 HandlerExecutionChainHandlerAdapterViewResolverView ~~老版本(过去式) 一、搭建springmvc 第一步:配置打包…

互联网行业逐步回暖!就业显示有74%学员跨专业学编程!

三年以来,居家办公、隔离等影响已深入每个人的生活。就业形势承受着巨大的压力,同时就业环境也发生巨大变化,越来越多的人都面临转行! 达妹被问到最多的问题是: 跨专业学编程的疑虑 非科班出身零基础能学会编程吗? 数…

程序人生:起薪13k,兜兜转转还得是软件测试

很多人一聊到IT教育培训第一反应就是:为什么要报班呢,网上大把资源它不香吗?自己学一学不就出来找工作了吗?还花这种冤枉钱? 小编作为从业人员认真地说,进入IT行业虽然不是特别难,但也没有这么…