当前位置: 首页 > news >正文

Docker的网络模式

Docker常见的几种网络模式

docker network ls 查看使用了哪些网络

[root@centos8-nat-168-182-152 ~]# docker network ls
NETWORK ID     NAME            DRIVER    SCOPE
c0184302f6a8   bridge          bridge    local
420492e04276   host            host      local
fc5e9b954735   none            null      local
[root@centos8-nat-168-182-152 ~]# docker network inspect bridge(网络名称)

我们在使用 docker run 创建 Docker 容器时,可以用 –net 选项指定容器的网络模式,Docker 可以有以下 4 种网络模式:

  • bridge 模式:使用 --net=bridge 指定,默认设置

  • host 模式:使用 --net=host 指定。

  • none 模式:使用 --net=none 指定。

  • container 模式:使用 --net=container:NAME_or_ID 指定。

网络模式含义
Bridge(默认模式)此模式会为每一个容器分配,设置IP等,并将容器连接到一 docker0 虚拟网桥,通过 docker0网桥以及Iptables nat表配置与宿主机通信。
Host容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的IP和端口
Container创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享 IP,端口范围。
None该模式关闭了容器的网络功能,与宿主机,与其他容器都不连通的.

1.Bridge

Bridge模式是启动容器时的默认模式,当Docker server 启动时,会在主机上创建一个名为 docker0 的虚拟网桥

网桥模式不太适用于生产环境,因为网桥背后涉及很多底层工作,会导致相当大的开销

--icc=false表示把容器之间的通信关闭,--iptables=true --icc=false已连接的容器才能通信

docker inspect jenkins
docker inspect --format='{{.NetworkSettings.NewtWork.IPAddress}}' jenkins

主机网络

在这里插入图片描述

容器内部网络

在这里插入图片描述

2.Host

Host:容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的IP和端口

不涉及网桥模式中底层开销,因此速度与常规的主机网络一样快,面向外部网络流量大的容器(例如代理和缓存)可以使用主机模式,而其他容器则使用内部网络模式

$ docker inspect jenkins

对比一下宿主机 / etc/hosts,一模一样

$ docker execjenkins cat /etc/hosts
$ cat /etc/hosts

3.Container

container创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享 IP,端口范围

# 创建容器
$ docker run --name=busybox_jenkins --net=container:bridge -td jenkins
# 查看新创建容器的IP,上面这种方式查不出来
$ docker inspect --format='{{.NetworkSettings.IPAddress}}' jenkins
# 通过ifconfig查询ip
$ docker exec busybox_jenkins ifconfig

4.None

$ docker run -dt --net=none --name busybox_jenkins jenkins
# 查看它的网络状态, 验证它仅有 lo 接口,不能与容器外通信
$ docker exec busybox_jenkins ip a

5.Docker实现内外网络通信

ip_forward: linux内核中用于开关内核的报文转发功能,只有这个开关被打开时,内核才会执行报文的转发

默认情况下,容器可以主动访问到外部网络的连接,但是外部网络无法访问到容器

# 临时修改
$ echo 1 >  /proc/sys/net/ipv4/ip_forward
# 永久修改
$ echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
$ sysctl -p

查看默认路由

$ route -n
# 或者
$ ip route

添加路由映射

$ ip route add <container_ip_address> via <host_ip_address> dev <network_interface>
http://www.lryc.cn/news/45440.html

相关文章:

  • 基于vue3.2、three实现地图在地图加载
  • 【C++】---优先级队列 仿函数
  • 图的遍历算法
  • 【蓝桥杯集训·每日一题】 AcWing 3996. 涂色
  • 人工智能中的Web端编程
  • jsp+mysql+J2EE校园自行车租赁系统cdA1A2程序
  • 当营养遇上肠道菌群:探究其对儿童健康的影响
  • vue尚品汇商城项目-day01【4.完成非路由组件Header与Footer业务】
  • IDEA安装教程(图文详解,一步搞定)
  • 【01 DualCam Porting】
  • redis --- string类型的使用
  • 康耐视visionpro-机器视觉定位引导-经验总结-来自视觉人粉丝分享
  • 包管理工具npm
  • ChatGPT正进军各行各业,抓住机遇,拥有无限的可能性。
  • Maven 多模块管理
  • crash 内核调试工具 ps 指令 显示的进程状态 RU, IN, UN, ZO, ST, TR, DE, SW, WA, PA 什么意思
  • Spring《二》bean的实例化与生命周期
  • java与kotlin 写法区别
  • 服务器运行深度学习代码使用指南
  • 计算机组成原理 - 2. 数据的表示和运算
  • 【js】基础知识点--语句,break和continue,switch,with,for..in,do-while,while
  • 【C++】迭代器
  • 数据可视化在前端中的应用
  • FFmpeg 合并视频文件没声音,不同步原因
  • 绕不开的“定位”
  • 《Effective Objective-C 2.0 》 阅读笔记 item12
  • 云原生计算能消除技术债务吗?
  • 9. 回文数
  • [SV]SystemVerilog线程之fork...join专题
  • 你看这个spring的aop它又大又宽