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

docker网络配置:bridge模式、host模式、container模式、none模式

docker网络模式选择 docker网络配置:bridge模式、host模式、container模式、none模式 - 熊仔其人 - 博客园

docker网络配置:bridge模式、host模式、container模式、none模式

在docker平台里有四种网络模式,今天继续分享一下它们的常用知识,进一步加深对docker技术的理解。

img

1、docker网络模式分类

docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker主要有以下4种网络模式。

img

  • bridge模式:--net=bridge 桥接模式(默认设置,自己创建也使用bridge 模式)

  • host模式:--net=host 和宿主即共享网络

  • container模式:--net=container:NAME_or_ID 容器网络连通!(很少用,局限性很大!)

  • none模式:--net=none 不配置网络

查看所有的docker网络

命令:docker network ls

[root@iZwz9535z41cmgcpkm7i81Z ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
8ddb7e9846c6   bridge    bridge    local
48e785b7efb3   host      host      local
7e07c5b5ae34   none      null      local
2、bridge 网桥模式

Docker安装启动后会在宿主主机上创建一个名为 docker0 的虚拟网桥,处于七层网络模型的数据链路层,后续每当我们创建一个新的docker容器,在不指定容器网络模式的情况下,docker会通过 docker0 与主机的网络连接,docker0 相当于网桥。

使用 bridge 模式新创建的容器,容器内部都会有一个虚拟网卡,名为 eth0,容器之间可以通过容器内部的IP相互通信。

命令:docker run -d -name tomcat01 --net=bridge -p 8085:80 tomcat:latest 说明:

  • --net=bridge 可省略 ,-p 指定端口映射

  • 网桥默认 IP 范围是一般都是 172.17.x.x

3、host 模式

如果指定的host模式容器不会拥有一个独立network namesace,而是与宿主主机共用network namesace。也就说明容器本身不会有的网卡信息,而是使用宿主主机的网络信息。容器除了网络,其他比如文件系统、进程等依然都是隔离的。

img

说明:

  • --net=host 指定

  • 容器和宿主主机共享 Network namespace

  • host模式因为和宿主主机共享network namespace,会有可能出现端口冲突的情况。

4、container模式

container模式和host模式很类似,host模式和宿主主机共享network namespace;container模式和指定的容器共享,两者之间除了网络共享(网卡、主机名、IP 地址),其他方面还是隔离的。

img

命令:docker run -d -name tomcat02 --net=container:name/id -p 8000:80 tomcat:latest 说明:

  • –-net={容器id 或容器name} 指定

  • 当前容器和另外一个容器共享 Network namespace

5、none模式

如果dockers容器指定的网络模式为none,该容器没有办法联网,外界也无法访问它,可以用来本次测试。

命令:docker run -d -name tomcat02 --net=none -p 8000:80 tomcat:latest 说明:

  • --net=none 指定

  • 容器有独立的Network namespace,但并没有对其进行任何网络设置,如果需要的话,需要自定义配置网络


Docker 网络桥接模式和 Host 模式的区别

首先,我们需要了解一下 Docker 的两种网络模式之间的区别。在桥接网络模式下,Docker 将为每个容器创建一个独立的网络命名空间,并为容器分配一个|P 地址。而在 Host 网络模式下,容器将直接使用主机的网络栈,与主机共享网络接口和 IP 地址,这意味着容器可以直接访问主机上的所有网络服务,同时也会导致容器与主机网络之间的隔离性降低。

Docker 网络桥接改 Host

在使用 Docker 运行容器时,经常会涉及到网络配置。默认情况下,Docker 使用桥接网络模式来为容器提供网络连接。但有时候,我们可能需要将容器直接连接到主机的网络,这时就需要将 Docker 网络模式改为 Host 模式。在本文中,我们将介绍如何通过改变 Docker 网络桥接模式为 Host 模式来实现容器直接连接到主机网络的配置。

Docker 容器不能直接修改已创建的网络模式为 host。但是,你可以通过以下步骤来实现你的需求:

1. 停止当前运行的容器。 2. 删除原有的容器。 3. 重新创建并指定网络模式为 host。

以下是一些可能的解决方案:

解决方案1:使用命令行

# 停止当前运行的容器
docker stop <container_id>
 
# 删除原有的容器
docker rm <container_id>
 
# 重新创建并指定网络模式为 host
docker run --net=host --name=<container_name> <image_name>

解决方案2:使用Docker Compose 如果你使用Docker Compose来管理你的容器,你可以在你的docker-compose.yml文件中更改网络模式,然后重新创建你的服务。

version: '3'
services:
  your_service:
    image: your_image
    network_mode: host

然后运行以下命令来重新创建服务:

docker-compose up -d

注意:使用 host 网络模式的容器将会使用宿主机的网络,这意味着容器的网络配置和DNS设置将与宿主机相同。这可能会导致网络配置冲突,因此在使用 host 网络模式前,请确保这是你想要的行为。


http://www.kler.cn/a/386377.html

相关文章:

  • DBeaver 连接 OceanBase Oracle 租户
  • 亲测有效:Maven3.8.1使用Tomcat8插件启动项目
  • 「Mac玩转仓颉内测版12」PTA刷题篇3 - L1-003 个位数统计
  • 开源项目推荐——OpenDroneMap无人机影像数据处理
  • DAY112代码审计PHP开发框架POP链利用Yii反序列化POP利用链
  • Vue.js 项目创建流程
  • 设计模式-七个基本原则之一-接口隔离原则 + SpringBoot案例
  • 苍穹外卖的分层所用到的技术以及工具+jwt令牌流程图(jwt验证)
  • java八股第一天
  • 斑马打印机如何与工业系统(如MES、ERP、数据库等)自动化通讯?
  • 计算机网络八股文个人总结
  • 友思特应用 | 动态捕捉:高光谱相机用于移动产线上的食品检测
  • Vosk 进行中文语音识别实例
  • Java基SpringBoot+Vue的高校院系学生信息管理系统(附源码,文档)
  • //二维数组的遍历方式
  • 分布式数据库中间件mycat
  • DIP switch是什么?
  • pdb和gdb的双剑合璧,在python中调试c代码
  • [Meachines] [Medium] MonitorsThree SQLI+Cacti-CMS-RCE+Duplicati权限提升
  • 【ESP32+MicroPython】硬件控制基础
  • Python毕业设计-基于 Python flask 的前程无忧招聘可视化系统,Python大数据招聘爬虫可视化分析
  • Flink处理无界数据流
  • TDengine 签约蘑菇物联,改造通用设备工业互联网平台
  • mac端mumu模拟器adb识别不了问题
  • Qt学习笔记(三)网络编程
  • DevExpress中文教程 - 如何使用AI模型检查HTML编辑中的语法?