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

1、docker网络模式分类

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

  • 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。也就说明容器本身不会有的网卡信息,而是使用宿主主机的网络信息。容器除了网络,其他比如文件系统、进程等依然都是隔离的。

说明:

  • --net=host 指定
  • 容器和宿主主机共享 Network namespace
  • host模式因为和宿主主机共享network namespace,会有可能出现端口冲突的情况。

4、container模式

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

命令: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 网络模式前,请确保这是你想要的行为。

docker网络配置:bridge模式、host模式、container模式、none模式的更多相关文章

  1. docker网络配置

    Docker网络配置 Docker网络模式介绍 Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用--net去指定,其他三种模式需 ...

  2. Docker网络配置、Docker部署分布式项目

    目标 1.Docker网络配置 2.Docker部署SpringCloud项目 Docker网络配置 Docker网络模式介绍 Docker在创建容器时有四种网络模式:bridge/host/cont ...

  3. Docker bridge、host、container other、overlay 网络模式

    docker run创建Docker容器时,可以用--net 选项指定容器的网络模式,Docker有以下5种网络模式: bridge模式:使用–net =bridge指定,默认设置: host模式:使 ...

  4. 5、Docker网络配置(单机)

    一.概述 以下内容参考:https://docs.docker.com/network/#network-drivers Docker容器和服务如此强大的原因之一是您可以将它们连接在一起,或者将它们连 ...

  5. docker——网络配置

    一.网络启动与配置参数 Docker启动时会在主机上自动创建一个docker0虚拟网桥,实际上是一个Linux网桥,可以理解为一个软件交换机,它会在挂载其上的接口之间进行数据转发.同时,Docker随 ...

  6. docke网络之bridge、host、none

    一.bridge网络 1.创建一个测试容器 [root@localhost ~]# docker run -d -it --name busybox_1 busybox /bin/sh -c &quo ...

  7. Docker网络配置进阶

    Docker启动会默认创建docker0虚拟网桥,是Linux的一个bridge,可以理解成一个软件交换机.它会在挂载到它的网口之间进行转发. 之后所有容器都是在172.17.0.x的网段上,并且可以 ...

  8. docker网络配置方法总结

    docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.42.1/16,一个16位的子网掩码给容器提供了65534个IP地址.docker0只是一个在绑定到这 ...

  9. Docker(六):Docker网络配置进阶

    1.Docker集群网络配置之Weave Weave是Github上一个比较热门的Docker容器网络方案,具有非常良好的易用性且功能强大.仓库地址:https://github.com/weavew ...

  10. docker网络之bridge

    建议阅读本文章之前了解一下文章,本文不作bridge的基本介绍 https://blog.csdn.net/u014027051/article/details/53908878/ http://wi ...

随机推荐

  1. 终于注册成功了 Web of Science 账号

    地址: https://www.webofscience.com/wos/op/publications/add 个人主页: https://www.webofscience.com/wos/auth ...

  2. Linux Shell简介

    目录 Shell是什么 基本介绍 用Shell编写HelloWorld Shell是什么 Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以 ...

  3. cmu15545笔记-查询优化(Query Optimization)

    目录 概述 Heuristics / Rules Cost-based Search Single relation Mutiple relation Genertive / Bottom-Up Tr ...

  4. 3、oracle内存讲解

    oracle数据库实例(instance) 数据库打开以后,会生成一个内存结构和一堆进程 内存和进程:就是oracle的实例instance oracle数据库实例结构: 用户是通过连接实例来访问数据 ...

  5. 腾讯云 AI 代码助手:产品研发过程的思考和方法论

    文章摘要 本文将详细阐述 腾讯云 AI 代码助手的历史发展形态与产品整体架构,并从技术.研发方法论的角度分别阐述了产品的研发过程. 全文阅读约 5-8 分钟. 产品布局 AI 代码助手产品经历了三个时 ...

  6. 70 个群都来问我的 AI 日报,是这么做的。

    最近我给 FastGPT 用户交流群里接入了 AI 日报,每天早上 10 点会自动向群里推送 AI 日报,让群里的小伙伴们第一时间了解到昨天 AI 领域都发生了哪些大事. 效果大概是这个样子的: 如果 ...

  7. apisix lua插件开发

    1. 怎么定义ngx自定义变量 ngx.var.custom_var nginx_config: # config for render the template to generate nginx. ...

  8. VulnHub-Sick0s1.1解法二shellshock漏洞

    免责声明 本博客提供的所有信息仅供学习和研究目的,旨在提高读者的网络安全意识和技术能力.请在合法合规的前提下使用本文中提供的任何技术.方法或工具.如果您选择使用本博客中的任何信息进行非法活动,您将独自 ...

  9. PHP之项目环境变量设置

    需求 在PHP开发中为了区分线上生产环境还是本地开发环境, 如果我们能通过判断$_SERVER['RUNTIME_ENVIROMENT']为 'DEV'还是'PRO'来区分该多好, 可惜的是$_SER ...

  10. CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序

    Selenium Selenium 是一款开源且可移植的自动化软件测试工具,专门用于测试网页端应用程序或者采集网页端数据.它能够在不同的浏览器和操作系统上运行,具有很强的跨平台能力.Selenium可 ...