Docker网络配置再学习之Host和none模式
创始人
2024-05-29 08:09:38
0

在之前的文章中,壹哥跟大家说过,关于Docker网络这一块的内容有很多,为了让大家搞清楚这个问题,壹哥准备搞几篇系列文章,来为各位小伙伴解惑。今天壹哥给大家带来的是Docker网络中host和none模式的配置实现教程,接下来我们来看看吧。

Docker容器和服务之所以强大,是因为两者可以连接在一起,或者将它们连接到非Docker的工作负载上,而Docker容器和服务甚至都不需要知道它们部署在Docker容器上。无论Docker主机是运行在Linux、window上,或者是两者混合运行,我们都可以使用Docker,以与平台无关的方式来管理它们。

而这一切的基础,都是缘于Docker网络提供的强大功能和良好设计!

一. 操作环境

我们先说一下运行所需要的环境,如下:

centos 7.x版本
docker版本:Docker version 20.10.18, build b40c2f6
xshell 7

二. Docker network 常用命令

我们先来看看Docket中提供的常用network命令。

  1. 查看docker network帮助手册

[root@hecs-215393 ~]# docker network --help  # 查看docker network 帮助手册Usage:  docker network COMMANDManage networksCommands:# 通过网络连接容器connect     Connect a container to a network# 创建一个网络连接create      Create a network# 关闭容器连接disconnect  Disconnect a container from a network# 显示一个或多个网络上的详细信息inspect     Display detailed information on one or more networks# 列出所有网络ls          List networks# 删除所有未使用的网络prune       Remove all unused networks# 删除一个或者多个网络rm          Remove one or more networksRun 'docker network COMMAND --help' for more information on a command.
[root@hecs-215393 ~]# 
  1. 列出docker网络

[root@hecs-215393 ~]# docker network ls # 列出docker网络
NETWORK ID     NAME      DRIVER    SCOPE
5b15d96cf179   bridge    bridge    local
12bf219add93   host      host      local
66b6768156e6   none      null      local
[root@hecs-215393 ~]# 
  1. 通过docker network create创建一个网络

[root@VM-8-11-centos ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
52f8e50a864d   bridge    bridge    local
5534ad5d6eca   host      host      local
d60aa65de36e   none      null      local
# 创建一个docker网络
[root@VM-8-11-centos ~]# docker network create qf
6fc2499a6dd26591e1b61f1d20e3c9c61f4b64e3de77b7a832be0f68572ec279# 再次查看一下当前的网络状态
[root@VM-8-11-centos ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
52f8e50a864d   bridge    bridge    local
5534ad5d6eca   host      host      local
d60aa65de36e   none      null      local
6fc2499a6dd2   qf        bridge    local
[root@VM-8-11-centos ~]# 
  1. 查看qf网络的详细信息

[root@VM-8-11-centos ~]# docker network inspect qf
[{"Name": "qf","Id": "6fc2499a6dd26591e1b61f1d20e3c9c61f4b64e3de77b7a832be0f68572ec279","Created": "2022-10-09T16:41:48.505578412+08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "172.19.0.0/16","Gateway": "172.19.0.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {},"Labels": {}}
]
[root@VM-8-11-centos ~]# 

三. Docker网络的作用

在开始学习Docker网络用法之前,我们再来了解一下Docker网络的作用,主要作用如下:

1. Docker网络可以负责容器间的相互连接和通信,以及端口映射;
2. 当容器`ip`地址发生更改时,可以通过服务名称进行网络通信,不会因为`ip`的更改导致服务不可用。

四. 网络模式

Docker的网络有以下几种网络模式:

网络模式

说明

bridge, 虚拟网桥, 默认模式

每一个容器有独立的ip, 并将容器连接到docker0网桥上

host

使用宿主机的ip和端口号, 容器不会虚拟出自己的网卡、配置ip

none

有独立的network namespace,但是并未对其进行任何网络设置

container

和一个指定的容器共享ip和端口号, 不会虚拟出网卡、配置ip等操作.

1. host模式

直接使用宿主机的ip地址与外界通信, 不再需要额外进行nat转换。容器将不会获得一个独立的network namespace, 而是和宿主机共用一个network namespace,容器不会虚拟出自己的网卡而是使用宿主机的ip和端口号。

1.1 host模式详解

当容器指定该模式时,会共享宿主机的ip和port。换句话说, 容器指定的端口号不能重复「使用此模式, 当使用-p参数指定端口映射的时候会出现警告」。

1.2 验证案例

我们以tomcat容器为例进行验证,先启动tomcat容器,指定应用的网络模式为host, 并使用-p参数指定端口映射。

警告信息: WARNING: Published ports are discarded when using host network mode;
host模式使用的是宿主机端口号,此模式下使用-p映射端口无效。

1.3 查看宿主机网络情况

进入tomcat8081容器内部查看网络。进入tomcat容器内部如果没有ip addr命令,则需要手动安装一下,命令如下所示:

apt-get update & apt-get install -y ip-route2

通过观察可以发现,容器内部的网络和宿主机一模一样。

1.4 host模式使用姿势

--network=host或者--network host

2. none模式

none模式下,并不为docker容器进行任何网络配置。docker容器没有网卡、ip、路由等信息, 只有一个lo,需要我们自己为docker容器添加网卡和配置ip等。

此种模式给了程序员极大的灵活性,但是需要自己配置,如无其它需求,建议使用bridge或者host模式。

2.1 使用姿势

我们在创建容器的时候,可以指定网络模式为none模式。

—network none或者—network=none

2.2 使用示例

这里以centos容器为例。

查看容器的详细信息当中的网络信息:

进入容器内部,查看网络情况:

五. 总结

各位小伙伴,今天壹哥为大家带来的birdge模式就是这些内容了,你是不是理解了呢?

docker网络作为整个docker体系中极为重要的一个知识点,在生产中经常被用到,尤其是网络模式当中的bridge模式和host模式更是应该重点掌握。自定义网络,可以通过服务名称「容器名称」进行容器间的通信。自动处理了容器名称与ip地址的映射关系,这样使得容器间通信更为可靠和容易。至于其他模式,如果各位小伙伴想要了解,敬请继续期待壹哥本系列的其他文章哦。

相关内容

热门资讯

二年级作文跳跳绳18篇(优选... 二年级作文跳跳绳18篇 篇一:跳绳的乐趣跳绳是一项非常有趣的运动,我很喜欢跳绳。每次跳绳,我都能感受...
二年级美术课画画作文54篇(... 二年级美术课画画作文54篇 篇一:我喜欢画画在二年级的美术课上,我非常喜欢画画。每当老师宣布要上美术...
小学生二年级作文火烧云(推荐... 小学生二年级作文火烧云 篇一火烧云今天,我看到了一种非常罕见的云,叫做火烧云。它的颜色非常美丽,就像...
追梦少年作文850字(精简3... 追梦少年作文850字 篇一追梦少年追梦少年是指那些积极向上、勇敢追求梦想的年轻人。他们充满激情和动力...
二年级作文我喜欢狮子(优秀6... 二年级作文我喜欢狮子 篇一我喜欢狮子我喜欢狮子,因为它们是世界上最强壮的动物之一。狮子有一头浓密的金...
看电影作文200字二年级【实... 看电影作文200字二年级 篇一我喜欢看电影我喜欢看电影,因为电影可以带给我快乐和惊喜。每次我看电影,...
小宁捡到钱二年级作文【经典6... 小宁捡到钱二年级作文 篇一今天放学的时候,我在回家的路上捡到了一张钱。当时我正在走路,突然看到地上闪...
二年级游乐园冲浪作文(优秀6... 二年级游乐园冲浪作文 篇一我最喜欢的游乐园冲浪今天,我和爸爸妈妈去了一个很大很有趣的游乐园。这个游乐...
二年级有趣的游戏作文200字... 二年级有趣的游戏作文200字 篇一:捉迷藏捉迷藏是我们二年级最喜欢的游戏之一。这个游戏的规则很简单:...
我的好朋友二年级作文【实用6... 我的好朋友二年级作文 篇一我的好朋友我有一个非常好的朋友,她叫小芳。她和我在同一个班级,我们从小学一...
我的家【优质6篇】 我的家 篇一我的家是一个温馨而快乐的地方。无论是平日的热闹还是周末的宁静,家里总是充满着欢声笑语和爱...
二年级作文不少于200个字【... 二年级作文不少于600个字 篇一我的暑假生活暑假终于来了,我迫不及待地迎接了这个长假。在这个暑假里,...
二年级暑假趣事作文捉老鼠(推... 二年级暑假趣事作文捉老鼠 篇一暑假快到了,我和弟弟决定在家里玩捉老鼠的游戏。我们找来了一些小道具,准...
小学二年级避暑山庄旅游作文(... 小学二年级避暑山庄旅游作文 篇一我和家人去了一个非常有趣的地方——避暑山庄。这个地方真的很美,有很多...
二年级作文游庐山【精简6篇】 二年级作文游庐山 篇一我和爸爸妈妈一起去了庐山。庐山是中国著名的山岳风景区,被誉为“江南第一山”。我...
二年级下册看图写话春天来了作... 二年级下册看图写话春天来了作文 篇一春天来了春天来了,大地变得生机勃勃。图中的小朋友们正在户外玩耍,...
二年级打雪仗作文指导【通用6... 二年级打雪仗作文指导 篇一打雪仗是冬天最有趣的活动之一,对于二年级的小朋友来说,更是一种享受。下面是...
二年级美丽的早晨作文(实用6... 二年级美丽的早晨作文 篇一美丽的早晨早晨的阳光透过窗户洒进来,房间里弥漫着一股清新的味道。我慢慢睁开...
小学二年级海边旅游作文200... 小学二年级海边旅游作文200字作文 篇一我和家人去海边旅游了,真是一个美好的经历!早上,我们一大早就...
二年级【优秀6篇】 二年级 篇一:我的暑假生活暑假终于来了,我迫不及待地开始了我的暑假生活。在这个悠长的假期里,我过得非...