Docker单机下的容器网络管理

news2025/1/17 5:53:09

Docker容器网络管理

容器网络类型

Docker安装以后,会在我们的主机上创建三个网络

docker network ls

image-20240312130610389

可以看到有bridge、host和none三种网络类型

我们先把ubuntu的网络环境配置一下

docker run -it ubuntu
apt update
apt install net-tools iputils-ping curl

这样环境就配置好了,接下来就退出容器,打包成为新的镜像

docker commit <容器name> <新镜像名>

现在我们来研究一下刚才上面的显示的三种网络类型

  • none网络:既然是none网络了,基本就是“没网络”,它只有一个本地的环回网络

    我们在创建容器时可以指定none网络来看看

    docker run -it --network=none ubuntu-net
    

    进入容器后可以ifconfig来查看一下网络

    image-20240312131219509

    他是无法连接到外界的互联网的,是一个真单机运行,没有人能从外部访问它

  • bridge网络:容器默认会使用bridge网络,即桥接网络,它被广泛应用

    image-20240312131459070

    我们进入桥接模式再ifconfig,发现相比none网络,它多了一个新的网络接口;其实这是Docker创建的虚拟网络,docker在此时就充当了一个桥接的角色,一边链接宿主网络,一头连接自己的虚拟子网

    image-20240312131634536

    通过这样的网桥,我们可以对容器的网络进行管控,可以使用network inspect来查看docker0网桥的配置信息

    docker network inspect bridge
    

    image-20240312131840073

  • host网络:当容器使用host网络时,会共享宿主网络,他们的配置完全一致

    docker run -it --network=host ubuntu-net
    

    在host网络的情况下,只要宿主主机能连上互联网,那么容器内部也没问题;这样一来就可以直接使用宿主的网络了,也不需要去开放端口了, 比桥接网络要方便的多,但相应的,安全性会有所下降。

    在使用时要根据实际情况来选择这三种网络的使用。

用户自定义网络

Docker为我们默认提供了三种网络驱动:bridge、overlay、macvlan。

我们可以用bridge来试着实现一下自定义的桥接网络

docker network create --driver bridge test

这里就创建好了一个名为test的桥接网络

image-20240312140247955

我们新建一个使用test网络的容器

docker run -it --network=test ubuntu-net

使用ifconfig来看一下网络情况

image-20240312135734646

我们现在退出这个容器,但不是关闭它,而是将其挂到后台

这里按ctrl + qctrl + p就能挂起

我们再次创建一个容器,这次不指定网络,看他的网络如下

image-20240312135750061

很明显他们不在一个网段,应该是相互隔离的,这是ping是ping不通的

接下来我把他的网络也接入test网络

docker network connect test <容器ID/名称>

image-20240312135823757

使用docker attach <容器id>来重新进入容器,再看看ifconfig里的配置

发现多了一个网络设备,现在两个容器就成功接入同一个网络环境下了

img

现在再试试ping原来的容器,就可以顺利ping通了

img

容器间网络

上面我们完成了通过自定义的网桥来实现容器间的通信,下面还可以直接配置容器间的网络来管理他们的通信

我们海狮先创建两个ubuntu-net容器

docker run -it ubuntu-net

我们直接在另外一个容器中ping它,由于他们都默认使用beidge网络处在同一个子网下,所以是可以顺利ping通的。

我们可以通过指定容器的ip来实现容器间通信,但是这样写的比较死。我们在配置容器的时候常常是自动分配的ip,这该怎么办呢

我们可以通过Docker为我们提供的DNS服务器来完成对域名的解析,只需要在启动容器时为容器所爱的网络命名,然后就可以实现互相的通信

docker run -it --name=test01 --network=test ubuntu-net
docker run -it --name=test02 --network=test ubuntu-net

image-20240313142337144

我们还可以直接让两个容器共享一个网络(设备),就相当于让他们处于同一网络环境下

docker run -it --name=test03 --network=container:test02 ubuntu-net

现在test02和test03的ip就完全一致了;

我们可以试着在test02中安装nginx

apt install -y systemctl nginx
systemctl start nginx

然后在tesst03中访问nginx

curl localhost

image-20240313142907208

成功访问,这俩容器的网络就接上了,实现了你中有我我中有你的网络状态

容器外部网络

上面了解了容器间的通信,接下来看看容器与外网的通信

在容器的三种网络模式下, 显然none模式是连不了外网的,这下只剩下共享和桥接两种模式来连接网络了。

学过计网的话,这里的物理机可以看做一个路由,容器将网络数据发给物理机,物理机通过地址变换再进行转发;所以这里公网是无法直接访问容器的

image-20240313143609477

上面的图是我们一般意义上的网络的转发,而对于Docker容器的也是差不多的

image-20240313143716050

这里有一个问题,如果只依靠NAT的话,我们的容器只能发送数据,而不能接收数据,该怎么办呢?

我们以前通过nginx实现过端口映射,这里的逻辑也是差不多的。

docker run -d -p 80:80 nginx

这里的-p是port端口映射,规则是宿主端口:容器端口,这里就是把容器的80端口映射到主机的80端口上

image-20240313144404741

我们可以使用docker ps,然后在PORTS里查看端口的映射情况

以上就是Docker中单机下的网络操作~


参考视频:Docker 容器技术 已完结(2022 最新版)4K蓝光画质+杜比音效 从内卷到开摆

视频教程文档:Docker容器技术

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

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

相关文章

移速u盘怎么恢复彻底删除的文件,移速u盘彻底删除的文件如何恢复

移速u盘怎么恢复彻底删除的文件&#xff1f;在日常使用中&#xff0c;我们经常会遇到需要删除U盘中的文件的情况。然而&#xff0c;有时候我们可能会不小心将重要的文件彻底删除&#xff0c;导致数据的丢失。对于移速U盘用户来说&#xff0c;如何恢复彻底删除的文件成为了一个备…

江科大stm32学习笔记——【6-1】TIM定时中断

一.定时器 1.类型 STM32F103C8T6定时器资源&#xff1a;TIM1,TIM2,TIM3,TIM4 我们这次用通用定时器 2.基本定时器 预分频器对来自RCC_TIMxCLK的72MHz进行预分频&#xff0c;比如写0就是不分频或1分频&#xff0c;输出频率输入频率72MHz。写1就是2分频&#xff0c;输出频率输…

Java复习01 集合概念

Java复习01 集合 在Java中&#xff0c;集合&#xff08;Collections&#xff09;是一种用来存储一组对象的结构。想象一下有一个装东西的箱子&#xff0c;这个箱子可以装很多不同类型的东西&#xff0c;例如书、DVD或者玩具。Java的集合也是这样&#xff0c;但是它专门用来装载…

如何利用工业以太网关实现上位机无线远程控制多台plc通讯?

组态软件与西门子S7系列PLC及三菱PLC间的无线通信测试需要用到以下设备&#xff1a; l 西门子PLC型号&#xff1a;S7-200Smart 2台 l 三菱PLC型号&#xff1a;FX5U 2台 l 上位机&#xff1a;力控V7.1 1台 l 无线通讯终端&#xff08;网口版&#xff09;——DTD418MB 3块…

群控软件代理,群控服务器配置要求

目录 前言 硬件要求 操作系统要求 代理软件要求 网络要求 1. 在群控服务器上安装Shadowsocks软件 2. 配置本地代理软件 3. 配置浏览器代理 前言 群控软件代理是指在进行群控活动时&#xff0c;利用代理服务器来隐藏真实的IP地址&#xff0c;以保护个人隐私或绕过一些网…

概率与常见的概率分布

概率是数据分析、机器学习中最基础的知识。也是在生活中最实用的一门学科&#xff0c;学了很多大道理不一定能过好一生&#xff0c;学好概率则有一定概率会变得更好。为大概率坚持&#xff0c;为小概率备份。 概率与分布 要想了解概率&#xff0c;首先得搞清楚概率和概率分布的…

「飞桨星河社区创作者激励计划」全新上线!丰富权益,等你领取~

为了助力更多的创作者实现在飞桨星河社区的成长&#xff0c;同时鼓励创作者们积极投入&#xff0c;记录创作者们的高光时刻&#xff0c;重磅推出**「创作者成长体系」&#xff0c;同时推出「每周精选&月度榜单」**活动&#xff0c;期待你一同加入精彩纷呈的AI学习与创作之旅…

学成在线_课程预览-视频播放测试_视频加载出错

问题 在进行课程预览界面的视频播放测试时界面提示视频加载出错。 如图所示JAVA特性讲解的第一小节视频加载出错。 查看课程计划会发现该小节已经进行了视频关联。 问题原因 此课程小节的关联视频在我们自己的minIO的桶中并不存在。所以前端从数据库中拿到的关联视频url是…

AI情报专刊来啦!《“AI换脸”威胁研究与安全策略》

目录 “AI换脸”常见的诈骗套路 1、伪造账号造谣传谣 2、冒充熟人进行诈骗 3、伪造身份申请银行贷款 4、“网络钓鱼”更加难以识别 5、冒充他人远程面试入职 6、冒名登录盗走银行余额 “AI换脸”的产业链 “AI换脸”使用到的技术 人脸识别和关键点检测 图像/视频合成技术 生成对…

【兔子机器人】修改GO、车轮电机ID(软件方法、硬件方法)以及修正VMC腿部初始化夹角

一、GO电机修改ID 1、硬件方法 利用上位机直接修改GO电机的id号&#xff1a; 打开调试助手&#xff0c;点击“调试”&#xff0c;查询电机&#xff0c;修改id号&#xff0c;即可。 但先将四个GO电机连接线拔掉&#xff0c;不然会将连接的电机一并修改。 利用24V电源给GO电机…

Redis命名设计

可读性和管理性 以项目名为前缀(防止key冲突)&#xff0c;用冒号分隔&#xff0c;比如项目名:表名:id zh(知乎):news_data(新闻数据):2(主键id) zh:news_data:2 精简性 key的命名&#xff0c;尽量精简&#xff0c;key的名字长度对内存的占用不可忽视&#xff0c;我们来实际…

成都产业园排名出炉!金牛区这个园区成数字产业聚集地

近日&#xff0c;成都产业园排名榜单正式发布&#xff0c;可以看出金牛区成数字产业聚集地&#xff0c;其中&#xff0c;备受瞩目的国际数字影像产业园荣登榜首。这一排名不仅彰显了国际数字影像产业园在数字产业领域的卓越表现&#xff0c;更凸显了成都作为西部重要城市在科技…

Redis及其常用命令(二)

SortedSet类型 在此类型中&#xff0c;每个元素都有一个分数 key -> string value -> sorted([socre,member],[score,member]...) # 添加元素 zadd key score member # 遍历集合 zrange key start stop [withscores] #升序 zrevrange key start stop [withscores]#降序…

如何“使用Docker安装compose,在CentOS7”?

1、下载地址 Releases docker/compose GitHub 2、下载好&#xff0c;上传服务器 3、 4、拷贝到/usr/local/bin/docker-compose目录下 cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose 5、变更权限 chmod x /usr/local/bin/docker-compose 6、启动 docker…

像SpringBoot一样使用Flask - 3.蓝图路由Blueprint

接上一篇文章《像SpringBoot一样使用Flask - 2.静态资源访问及模版》&#xff0c;我们看到测试的"controller"都写在了一起&#x1f914; 如何像Springboot一样划分出一个完整的controller&#xff0c;里面实现不同业务的包呢&#xff1f; 本篇引入Blueprint&#xf…

深入解析Condition的底层实现原理

一、原理概述 在AQS中&#xff0c;存在两个FIFO队列&#xff1a;同步队列和等待队列。等待队列是由Condition内部实现的&#xff0c;是一个虚拟的FIFO单向队列。 释义&#xff1a; AQS中tali和head主要构成了一个FIFO双向的同步队列&#xff0c;AQS中Condition构成了一个FIFO…

腾讯云轻量应用服务器地域如何选择?

腾讯云轻量应用服务器地域如何选择&#xff1f;地域就近选择&#xff0c;北方选北京地域、南方选广州地域&#xff0c;华东地区选上海地域。广州上海北京地域有什么区别&#xff1f;哪个好&#xff1f;区别就是城市地理位置不同&#xff0c;其他的差不多&#xff0c;不区分好坏…

gif动图怎么从视频中提取?一个方法操作简单

我们在日常上网时&#xff0c;会看到各种各样的gif动态图片。很多都是由当下大火的电影、电视剧中的画面制作的&#xff0c;这些gif动图非常的生动形象。相比视频、电影&#xff0c;gif动图的文件体积要小很多&#xff0c;方便传播。那么&#xff0c;如何从视频中提取gif动画呢…

短视频解析接口分发系统,附带系统搭建教程

搭建教程 宝塔面板&#xff1a;Nginx系统 php7.2 Mysql 5.6-5.7 伪静态Thinkphp 上传文件直接访问域名安装即可 解析接口推荐&#xff1a;ce.qsy.mobi 源码免费下载地址抄笔记

brew安装node和nvm切换和管理node版本

Homebrew是一款Mac OS平台下的软件包管理工具&#xff0c;拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令&#xff0c;就可以实现包管理&#xff0c;而不用你关心各种依赖和文件路径的情况&#xff0c;十分方便快捷。简单来说&#xff0c;Homebrew提供 App…