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

探索Docker网络配置和管理

目录

1.docker网络类型有几种?

2.自定义网络管理

1.查看网络信息

2.查看网络的详细信息

3.创建四种网络容器

3.none类型

1.验证

 4.host类型

1.验证

5. bridge类型

1.验证

2.设备对 

6. container类型

1.验证

 2.详解

7.科普下docker的网络名称空间 



“如果您在解决类似问题时也遇到了困难,希望我的经验分享对您有所帮助。如果您有任何疑问或者想分享您的经历,欢迎在评论区留言,我们可以一起探讨解决方案。祝您在编程路上顺利前行,不断突破技术的难关,感谢您的阅读!”


1.docker网络类型有几种?

  1. none:

    • 作用: 不为容器创建网络接口,容器内部只有本地回环接口(lo)。
    • 适用场景: 对网络要求较低,容器不需要与外部或其他容器通信的场景。
    • 大白话:没有网卡,只有一个本地回环网卡lo。
  2. host:

    • 作用: 容器与宿主机共享网络命名空间,不会创建新的网络接口。
    • 优势: 最高的网络性能,容器直接使用宿主机的网络,无额外的网络地址转换。
    • 风险: 容器与宿主机的网络资源可能发生冲突,尤其是端口冲突。
    • 大白话:不会产生新的网络名称空间。直接使用宿主机的网络名称空间。效率极高。缺陷就是宿主机和监听端口和容器可能会存在冲突的风险。
  3. bridge:

    • 作用: 创建一个Linux网桥,容器连接到这个桥上,从而与宿主机的网络进行通信。
    • 适用场景: 多个容器需要与宿主机和其他容器通信时,使用桥接网络最为常见。
    • 大白话:桥接网卡,相当于VM的NAT网络,会产生一块新的网卡,会生成一对设备对,一端在容器里,另一端在宿主机上。
  4. container:

    • 作用: 与指定的已存在容器共享网络命名空间,即两个容器可以共享相同的网络配置和接口。
    • 适用场景: 需要实现一些特定的网络拓扑或者容器之间需要直接通信而不经过宿主机的场景。
    • 大白话:不会创建新的网卡,和指定的容器共享网络名称空间。
  5. custom:

    • 作用: 允许用户自定义网络配置,可以使用Docker网络插件来实现不同的网络驱动和设置。
    • 适用场景: 需要更复杂的网络拓扑或者特定网络策略的场景,比如多主机通信、跨云服务的容器通信等。
    • 大白话:自定义网络名称空间。

每种网络模式都有其适用的场景和特点,选择合适的网络模式可以根据容器的需求和安全性要求来决定。

2.自定义网络管理

1.查看网络信息

 docker network ls

2.查看网络的详细信息

docker network inspect bridge

3.创建四种网络容器

docker run -id --name 1-none  --network none  alpine
docker run -id --name 2-host --network host alpine
docker run -id --name 3-bridge --network bridge alpine
docker run -id --name 4-container --network container:3-bridge alpine

4.查看容器运行状态

docker ps -a

3.none类型

  1. none:

    • 作用: 不为容器创建网络接口,容器内部只有本地回环接口(lo)。
    • 适用场景: 对网络要求较低,容器不需要与外部或其他容器通信的场景。

1.验证

查看容器状态

docker inspect 1-none 

首先他是没有IP地址的 

 进入容器查看

docker exec -it 1-none shifconfig 

 

 4.host类型

  1. host:

    • 作用: 容器与宿主机共享网络命名空间,不会创建新的网络接口。
    • 优势: 最高的网络性能,容器直接使用宿主机的网络,无额外的网络地址转换。
    • 风险: 容器与宿主机的网络资源可能发生冲突,尤其是端口冲突。

1.验证

 docker exec -it 2-host shifconfig 

5. bridge类型

  1. bridge:

    • 作用: 创建一个Linux网桥,容器连接到这个桥上,从而与宿主机的网络进行通信。
    • 适用场景: 多个容器需要与宿主机和其他容器通信时,使用桥接网络最为常见。
    • 大白话:桥接网卡,相当于VM的NAT网络,会产生一块新的网卡,会生成一对设备对,一端在容器里,另一端在宿主机上。

1.验证

docker exec -it 3-bridge shifconfig 

桥接网卡,相当于VM的NAT网络,会产生一块新的网卡,会生成一对设备对,一端在容器里,另一端在宿主机上。

2.设备对 

宿主机产生的

容器产生的

6. container类型

  1. container:

    • 作用: 与指定的已存在容器共享网络命名空间,即两个容器可以共享相同的网络配置和接口。
    • 适用场景: 需要实现一些特定的网络拓扑或者容器之间需要直接通信而不经过宿主机的场景。
    • 大白话:不会创建新的网卡,和指定的容器共享网络名称空间。

1.验证

docker exec -it 4-container shifconfig 

 2.详解

因为他指定的是 3-的所有他们两个公用了同一个网络

7.科普下docker的网络名称空间 

这些是 /proc/$$/ns 目录下的符号链接,每个符号链接代表了不同的 Linux 命名空间类型。下面解释每个的含义以及如何使用命令来查看它们:

  1. cgroup (cgroup:[4026531835]):

    • 含义: 控制组命名空间,用于限制和控制进程组的资源使用。
    • 命令: 查看当前进程的 cgroup 命名空间:
       
      ls -l /proc/$$/ns/cgroup

  2. ipc (ipc:[4026531839]):

    • 含义: 进程间通信命名空间,管理进程间通信资源如消息队列、信号量等。
    • 命令: 查看当前进程的 ipc 命名空间:
       
      ls -l /proc/$$/ns/ipc

  3. mnt (mnt:[4026531840]):

    • 含义: 挂载点命名空间,管理文件系统挂载点。
    • 命令: 查看当前进程的挂载点命名空间:
       
      ls -l /proc/$$/ns/mnt

  4. net (net:[4026531992]):

    • 含义: 网络命名空间,用于隔离网络设备、IP 地址等网络资源。
    • 命令: 查看当前进程的网络命名空间:
       
      ls -l /proc/$$/ns/net

  5. pid (pid:[4026531836]):

    • 含义: 进程命名空间,隔离进程 ID 号码。
    • 命令: 查看当前进程的进程命名空间:
       
      ls -l /proc/$$/ns/pid

  6. pid_for_children (pid:[4026531836]):

    • 含义: 为子进程指定的进程命名空间,Linux 内核版本 5.6 之后引入。
    • 命令: 查看当前进程的进程命名空间(与 pid 相同):
       
      ls -l /proc/$$/ns/pid_for_children

  7. time (time:[4026531834]):

    • 含义: 时间命名空间,隔离 clock_gettimeclock_settime 等时间操作。
    • 命令: 查看当前进程的时间命名空间:
       
      ls -l /proc/$$/ns/time

  8. time_for_children (time:[4026531834]):

    • 含义: 为子进程指定的时间命名空间,Linux 内核版本 5.6 之后引入。
    • 命令: 查看当前进程的时间命名空间(与 time 相同):
       
      ls -l /proc/$$/ns/time_for_children

  9. user (user:[4026531837]):

    • 含义: 用户命名空间,用于隔离用户 ID 和组 ID。
    • 命令: 查看当前进程的用户命名空间:
       
      ls -l /proc/$$/ns/user

  10. uts (uts:[4026531838]):

    • 含义: UTS 命名空间,用于隔离主机名和域名。
    • 命令: 查看当前进程的 UTS 命名空间:
       
      ls -l /proc/$$/ns/uts

每个命名空间都通过 /proc/$$/ns 目录下的符号链接表示,其中 $$ 是当前 Shell 或进程的 PID。这些命名空间用于实现 Linux 的进程隔离和资源管理,允许不同进程在各自独立的环境中运行。

http://www.lryc.cn/news/400640.html

相关文章:

  • 【数据库】 mysql数据库管理工具 Navicat平替工具 免费开源数据库管理工具
  • 信息系统项目管理师(高项)—学习笔记二
  • 【Vue】 style中的scoped
  • maven项目容器化运行之2-maven中使用docker插件调用远程docker构建服务并在1Panel中运行
  • 电影购票小程序论文(设计)开题报告
  • IP风险画像 金融行业的安全盾牌
  • 探索老年综合评估实训室的功能与价值
  • 视频剪辑软件如何选?FCPX和PR更适合新手呢
  • 解决第三方模块ts声明文件编译错误问题
  • 数据结构小测试:排序算法
  • 电脑远程开关机
  • # Redis 入门到精通(四)-- linux 环境安装 redis
  • SQL进阶技巧:如何按照固定尺寸(固定区间)对数据进行打分类标签?
  • 数学建模·灰色关联度
  • EMQX开源版安装
  • R语言进行集成学习算法:随机森林
  • 虚拟机的状态更新
  • 基于hive数据库的泰坦尼克号幸存者数据分析
  • excel根据数据批量创建并重命名工作表
  • 智能合约和分布式应用管理系统:技术革新与未来展望
  • Spring MVC 中的拦截器的使用“拦截器基本配置” 和 “拦截器高级配置”
  • MyBatis框架学习笔记(四):动态SQL语句、映射关系和缓存
  • 【C++PythonJava】字符处理详细解读_字符_ASCLL码_字母数字转换_算法竞赛_开发语言
  • 人像视频淡入淡出效果的灵敏检验方法
  • Unity UGUI Image Maskable
  • SpringCloud | 单体商城项目拆分(微服务)
  • uniapp 如何实现路由拦截,路由守卫
  • 人工智能算法工程师(中级)课程13-神经网络的优化与设计之梯度问题及优化与代码详解
  • Qt/QML学习-ComboBox
  • 微服务实战系列之玩转Docker(一)