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

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

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

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

相关推荐
杨浦老苏1 天前
开源云文件存储服务器MyDrive
docker·群晖·网盘
PellyKoo1 天前
Docker容器中中文文件名显示乱码问题完美解决方案
运维·docker·容器
无妄无望1 天前
在没有网络的环境下安装包pymysql
学习·docker
奥尔特星云大使1 天前
Docker 拉取 MySQL 5.7 镜像、启动容器并进入 MySQL
数据库·mysql·docker·容器
big男孩1 天前
Docker使用环境变量的整理
docker
安卓开发者1 天前
Docker与Nginx:现代Web部署的完美二重奏
前端·nginx·docker
七夜zippoe1 天前
压缩与缓存调优实战指南:从0到1根治性能瓶颈(四)
运维·docker·容器
java_logo1 天前
Docker 部署 MinerU 教程:打造你的本地 PDF 智能处理中心
linux·运维·人工智能·docker·ai·容器·aigc
LCG元1 天前
Docker容器化实战:将你的SpringBoot应用一键打包部署(三)-配置告警和自动扩缩容
后端·docker
技术杠精1 天前
Docker Swarm之Java 应用部署与平滑更新
java·docker·容器