71、docker网络

news2024/12/26 11:50:39

一、docker网络:

1.1、默认模式:

桥接模式 部署好docker服务,启动之后,就会创建一个虚拟网桥,docker0,这是一个虚拟网络设备,类似于交换机。

[root@docker1 ~]# ifconfig 
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:acff:fe8d:61a4  prefixlen 64  scopeid 0x20<link>
        ether 02:42:ac:8d:61:a4  txqueuelen 0  (Ethernet)
        RX packets 146  bytes 16410 (16.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 186  bytes 20291 (19.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

每一次运行容器之后,docker0就会从网段中分配一个ip地址给这个容器。

容器和主机之间的通信:通过桥接模式通信。

容器与容器之间通信:多个容器都在统一网段,都在统一网桥,可以通过自己的ip地址进行通信。

1.2、桥接模式

桥接模式:连接两个不同网络段的设备,共享通信的一种方式。

172.17. ------路由器------192.168.

基于mac地址转发数据帧。

当172.17-------------192.168 桥接设备查看目标的mac地址。

ARP广播。如果再mac地址表,桥接设备直接把数据帧转发目标的相应接口。

如果不在,ARP广播,所有接口都会收到数据报文,有则响应,无责丢弃。

桥接模式在物理和数据链路层上工作,学习和转发mac地址,用于局域网和内部网络的连接和扩展。

vethpair方式生成一个对应容器的虚拟网卡。

docker网桥是宿主机虚拟出来的,并不是真正的网络设备。外部是没有办法通过寻址找到的。

也是客户端是无法直接访问容器的ip地址。

如果希望外部网络能够访问,要通过端口映射容器的端口到宿主机。

桥接模式的宿主机和容器之间的端口映射,实际上是做了nat地址的转换,容器的私有ip映射到主机的ip上。

从而实现容器与外部网络的通信。隐藏了容器内部的真实ip地址。

内部之间通信数据帧转发

外部通信地址转换

#容器要保持一直运行,必须要指定有一个运行的程序。nginx镜像当中声明好了运行程序。

nginx -g ‘daemon off’ 保持nginx一直在后台运行。 itd 不加d,前台运行展示运行结果。加d,后台运行不展示运行结果。

1.3、docker基于桥接模式的网络类型:

1、host模式,容器不会虚拟出自己的网卡,也不会配置自己的ip。容器全部使用宿主机的ip和端口。

端口不重复的类型的应用,nginx http docker本身是单节点模式,使用与部署单个服务的应用程序。

1、创建host模式

[root@docker1 ~]# docker run -itd --name nginx1 --network host nginx:1.22  
[root@docker1 ~]# docker run -itd --name nginx2 --net=host nginx:1.22

[root@docker1 ~]#  docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nginx1  ##查看容器ip地址
开启nginx2------发现端口占用
[root@docker1 ~]# docker run -itd --name nginx2 --net=host nginx:1.22
57f347225c6b1fda07ee541c88d4f529525d236ee7530fc10dcd2f2840453a2a
[root@docker1 ~]# docker ps
CONTAINER ID   IMAGE        COMMAND                   CREATED         STATUS         PORTS     NAMES
cc523653112e   nginx:1.22   "/docker-entrypoint.…"   4 minutes ago   Up 4 minutes             nginx1
[root@docker1 ~]# docker ps -a
CONTAINER ID   IMAGE        COMMAND                   CREATED          STATUS                      PORTS     NAMES
57f347225c6b   nginx:1.22   "/docker-entrypoint.…"   20 seconds ago   Exited (1) 17 seconds ago             nginx2
cc523653112e   nginx:1.22   "/docker-entrypoint.…"   4 minutes ago    Up 4 minutes                          nginx1

[root@docker1 ~]# docker logs -f nginx2 ##查看日志

在这里插入图片描述

2、container模式

container模式:容器和容器之间共用一个network namespace,不是和宿主机共享。

新创建的容器也不会有自己的网卡,配置自己的ip。

而是和一个容器共享ip端口,除了网络之外,其他的比如文件系统等等都是隔离的。

创建container容器网络
[root@docker1 ~]# docker rm -f nginx1   ##删除容器nginx1
[root@docker1 ~]# docker run -itd --name test1 centos:7 /bin/bash
[root@docker1 ~]#  docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' test1
172.17.0.2
[root@docker1 ~]# docker run -itd --name test2 --net=container:test1 centos:7 /bin/bash
[root@docker1 ~]# docker inspect -f '{{.State.Pid}}' test1
26062
[root@docker1 ~]# docker inspect -f '{{.State.Pid}}' test2
26179

[root@docker1 ~]# ls -l /proc/26062/ns
总用量 0
lrwxrwxrwx. 1 root root 0 8月  13 11:53 ipc -> ipc:[4026532581]
lrwxrwxrwx. 1 root root 0 8月  13 11:53 mnt -> mnt:[4026532579]
lrwxrwxrwx. 1 root root 0 8月  13 11:16 net -> net:[4026532584]
lrwxrwxrwx. 1 root root 0 8月  13 11:53 pid -> pid:[4026532582]
lrwxrwxrwx. 1 root root 0 8月  13 11:53 user -> user:[4026531837]
lrwxrwxrwx. 1 root root 0 8月  13 11:53 uts -> uts:[4026532580]
[root@docker1 ~]# ls -l /proc/26179/ns
总用量 0
lrwxrwxrwx. 1 root root 0 8月  13 11:53 ipc -> ipc:[4026532654]
lrwxrwxrwx. 1 root root 0 8月  13 11:53 mnt -> mnt:[4026532652]
lrwxrwxrwx. 1 root root 0 8月  13 11:53 net -> net:[4026532584]
lrwxrwxrwx. 1 root root 0 8月  13 11:53 pid -> pid:[4026532655]
lrwxrwxrwx. 1 root root 0 8月  13 11:53 user -> user:[4026531837]
lrwxrwxrwx. 1 root root 0 8月  13 11:53 uts -> uts:[4026532653]



在这里插入图片描述

3、none模式:

创建容器之后,容器有自己的网络命名空间,但是不会进行任何网络的配置。

没有网卡,没有ip,没有端口,只有本地lo回环网络,没有办法进行连网。网络是封闭的,一般是

[root@docker1 ~]# docker run -itd --name nginx1 --network none nginx:1.22
32058010ecfc44723d46dfccc862e7d94b5086418033cdd23e32205d936cc5fa
[root@docker1 ~]# docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nginx1

查看nginx1容器的信息

docker run -d --name a1 --network=none nginx:latest
docker ps -a
docker inspect a1  ##查看该容器的详细信息
"Gateway": ""
"IPAddress": "", 

4、自定义网络

自定义网络:和桥接模式一样,只不过我们可以自定义容器的网段和给新创建

[root@docker1 ~]# docker run -itd --name nginx1 --network brige --ip 172.17.0.5 nginx:1.22
c35e76bec84e3ae6dcc63acb37dc6eab1c3bc661d6063124a3bc0fa503e839c3
docker: Error response from daemon: network brige not found.

只有自定义网络可以在创建容器的时候指定ip地址

[root@docker1 ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
3ed862dda9dc   bridge    bridge    local
2f233d494983   host      host      local
20b905123c24   none      null      local

创建自定义网络

[root@docker1 ~]# docker network create --subnet=172.111.0.0/16 mynetwork1 
978fd8c202ba023708ec0cd9be465aabe8814c123bc1a9ae2386b0cb986ba790
[root@docker1 ~]# docker network ls
NETWORK ID     NAME         DRIVER    SCOPE
3ed862dda9dc   bridge       bridge    local
2f233d494983   host         host      local
978fd8c202ba   mynetwork1   bridge    local
20b905123c24   none         null      local

在这里插入图片描述

指定网卡名字
[root@docker1 ~]# docker network create --subnet=172.112.0.0/16 --opt "com.docker.network.bridge.name"="docker2" mynetwork2

在这里插入图片描述

[root@docker1 ~]# docker network ls
NETWORK ID     NAME         DRIVER    SCOPE
3ed862dda9dc   bridge       bridge    local
2f233d494983   host         host      local
978fd8c202ba   mynetwork1   bridge    local
c87eba1e8cc7   mynetwork2   bridge    local
20b905123c24   none         null      local
根据自定义网络创建容器
[root@docker1 ~]# docker run -itd --name nginx5 --net mynetwork2 --ip 172.112.0.5 -p 88:80 nginx:1.22

总结:

1、docker的网络模式就是桥接模式

host 宿主机共享网络 常用

container 模式 容器之间共享

none模式 无网络模式,单机模式

自定义网络 只有自定义网络可以在创建容器的时候指定ip地址

①host模式---------------容器使用宿主机的网络直接公开服务

这意味着你在容器中运行一个web服务,那么它就直接绑定到主机的网络接口上,而不是通过docker进行任何网络转发

与宿主机共享网络名称空间

②container

这种模式允许容器去共享另一个容器网络命名空间,这说明两个容器可以相同的网络接口和iP地址,他们共享的是同一网络命名空间

多个容器之间共享一个net work namespace(命名空间)

③none---------- 是最简单的网络模式

此网络模式表示容器拥有自己的网络命名空间,但不会进行任何网络配置,这实际给了用户完全的自主权来给自己配置容器的网络

自闭空间 局域网

④ bridge------------- 默认的网络模式

每个新创建的容器都将该网络分配一个IP地址,此网络模式允许所有docker容器之间以及docker宿主机之间进行互相通信

默认模式 通过VETH对连接容器docker0网桥 、网桥分配给容器IP 、同时docker0作为局域网内容器的网关,最后与宿主机网卡进行通讯

⑤ user-defined network自定义

docker允许用户创建自己的定义的网络,用户可以定义的网络范围、子网、路由 等参数

这种类型网络使用用户可以更好地对容器网络进行控制和隔离

(业务需求:注:根据甲方指定或领导指定)
根据业务需求指定静态IP
容器都将该网络分配一个IP地址,此网络模式允许所有docker容器之间以及docker宿主机之间进行互相通信

默认模式 通过VETH对连接容器docker0网桥 、网桥分配给容器IP 、同时docker0作为局域网内容器的网关,最后与宿主机网卡进行通讯

⑤ user-defined network自定义

docker允许用户创建自己的定义的网络,用户可以定义的网络范围、子网、路由 等参数

这种类型网络使用用户可以更好地对容器网络进行控制和隔离

(业务需求:注:根据甲方指定或领导指定)
根据业务需求指定静态IP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2048547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux:Linux环境基础开发工具使用

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一. Linux 软件包管理器 yum 1.1 什么是软件包 1.2 查看软件包 1.3 如何安装软件 1.4 如何卸载软件 二 Linux编辑器-vim使用 ​编辑 2.1 vim的基本概念 2.2 vim正常模式命令集…

安装postgresql和PGVector

1. 概述 研发有需要&#xff0c;要使用PGVector做向量。简单记录安装postgresql和PGVector过程。 2. 参考 postgresql官方下载连接 postgresql官方linux yum安装 PostgreSQL的安装、配置与使用指南 PostgreSQL向量数据插件–pgvector安装 3. 安装 3.1 只安装postgresql&am…

进程地址空间(一)

目录 1. 语言层面上的地址2. 引入新概念 ---- 地址空间的概念3. 进一步理解地址空间4. 为什么要有地址空间 在正式介绍进程地址空间之前&#xff0c;我们需要做一些铺垫&#xff0c;在父子进程同时运行时&#xff0c;从代码层面上的变量的地址&#xff0c;引入进程地址空间的概…

2.1算法的时间复杂度与空间复杂度

本篇博客介绍算法的时间复杂度与空间复杂度 一、算法效率 算法好坏从时间和空间两个维度衡量 二、时间复杂度 1&#xff0e;概念 时间复杂度是算法中基本操作的执行次数&#xff0c;定量描述了算法的运行时间 2&#xff0e;注意 &#xff08;1&#xff09;时间复杂度是偏…

vue项目中引入字体文件样式

需求:关于一些样式需要自定义的,所以需要ui提供字体文件,然后引入项目中,就可实现自定义 首先看一下实现效果图: 第一步:新建一个字体样式文件用于放字体文件和css样式 font.css文件: /* 数字特殊字体 */ font-face {/*给字体命名*/font-family: DINCondBold;/*引入字体文件*…

课堂助手小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;教师管理&#xff0c;专业信息管理&#xff0c;部门信息管理&#xff0c;课程信息管理&#xff0c;教学内容管理&#xff0c;学生作业管理&#xff0c;系统管理 微信端账号功能包…

防止内存泄漏的神兵利器 — 智能指针

1.内存泄漏 1.1什么是内存泄漏 当我们在写C/C程序的时候&#xff0c;难免会出现内存泄漏的错误&#xff0c;因为C/C不像Java语言那样&#xff0c;拥有自己的垃圾回收机制&#xff0c;C/C中对于资源的管理&#xff0c;完全交给程序员自己打理&#xff0c;也就是说使用C/C的程序…

Ubuntu下NFS和SSH服务

本篇文章记录Ubuntu下如何对NFS和SSH服务进行配置和开启。 目录 一、NFS服务 二、SSH服务 1、安装SSH服务 2. 启动和检查SSH服务 3. 配置SSH服务 4. 连接到SSH服务 5. 设置防火墙 6. 测试连接 三、结语 一、NFS服务 NFS&#xff08;Network File System&#xff0…

设计模式(2)行为型模式和七大原则

1、目标 本文的主要目标是学习设计模式的行为型模式并举例说明 2、行为型模式 2.1 观察者模式&#xff08;Observer&#xff09; 观察者模式是对象之间存在一对多的依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;所有依赖它的对象都会得到通知并自动更新&…

京东数据编织

计算引擎是Hbase 中间计算结果的物化【就是存下来】 自动物化 在这里插入图片描述

设计模式在芯片验证中的应用——状态

一、状态模式 状态模式是一种行为设计模式&#xff0c; 让你能在一个对象的内部状态变化时改变其行为&#xff0c; 使其看上去就像改变了自身所属的类一样。 在RTL中可能存在复杂的有限状态机FSM&#xff0c;在任何一个特定状态中&#xff0c; RTL的行为都不相同&#xff0c;…

pip install 遇到ValueError: check_hostname requires server_hostname的解决办法

我需要下载Cython来将py编译成c&#xff0c;结果在pip install的时候报错这个&#xff1a; ERROR: Exception: Traceback (most recent call last):File "F:\Anaconda3\envs\DouyinLive32\lib\site-packages\pip\_internal\cli\base_command.py", line 173, in _mai…

《人类群星闪耀时》

人类群星闪耀时&#xff0c;历史的舞台上&#xff0c;你未尝不是其中一颗。 【拜占庭的沦陷】具备决断力、创新力、执行力的领导者起到关键作用。 【享德尔的复活】人的心力一旦强大&#xff0c;便可创造非凡之事。 【一夜天才】闪耀的星离不开黑夜的衬托。所谓的英雄&#x…

HarmonyOS Developer之生成二维码

qrcode 生成并显示二维码 属性 样式 创建qrcode组件 在pages/index目录下的hml文件中创建一个qrcode组件 HTML <!-- xxx.hml--> <div class"container"><qrcode value"Hello"></qrcode> </div>CSS /* xxx.css */ .cont…

uniapp 微信小程序生成水印图片

效果 源码 <template><view style"overflow: hidden;"><camera device-position"back" flash"auto" class"camera"><cover-view class"text-white padding water-mark"><cover-view class"…

基于JAVA的社团管理系统的设计与实现

TOC springboot270基于JAVA的社团管理系统的设计与实现 第1章 绪论 1.1 课题背景 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供…

html+css 实现hover 边框彩色按钮

前言:哈喽,大家好,今天给大家分享html+css 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 一、效果二、原理解析1.这是一个,hover后按钮边框==变彩色==的效果。每个按钮都是1个but…

matlab关于结构体的创建

网上搜了很多结构体的创建&#xff0c;都是什么student.name student.age,或者struct. 自己摸索了一下&#xff0c;根据你想要创建结构体的格式可以划分以下两类 clear all clcdata [1, 2, 2, 1;2, 1, 1, 3;4, 3, 2, 2];data1 [0, 2, 2, 1;0, 1, 1, 3;4, 3, 0, 2;4, 3, 0, 2…

解锁企业数字化转型的终极指南:《数字时代的敏捷架构》深度解读

在当前数字化浪潮的冲击下&#xff0c;企业面临着前所未有的挑战与机遇。为了解决这一难题&#xff0c;The Open Group 和 AZone 联手推出了《数字时代的敏捷架构》&#xff0c;《数字时代的敏捷架构》汇集了全球顶尖专家的智慧和经验&#xff0c;是企业数字化转型的必读之作。…

【IEEE独立出版】第四届人工智能、虚拟现实与可视化国际学术会议(AIVRV 2024)

第四届人工智能、虚拟现实与可视化国际学术会议&#xff08;AIVRV 2024&#xff09; 2024 4th International Conference on Artificial Intelligence, Virtual Reality and Visualization 会议时间&#xff1a;2024年11月1日-3日 会议地点&#xff1a;中国-南京…