docker的网络模式

docker0网络
docker容器的 虚拟网关loopback :回环网卡、TCP/IP网卡是否生效virtual bridge:linux 自身继承了一个虚拟化功能(kvm架构),是原生架构的一个虚拟化平台,安装了一个虚拟化平台之后就会系统就会自动安装虚拟网卡
(示例:安装workstation (虚拟化平台)之后,会在网络适配器中会多出VMnet1 VMnet8 VMnet0)docker 0 : 容器的网关,绑定物理网卡,负责做NAT 地址转换、端口映射
docker 0 本身也是一种容器

目录

一.四种网络模式

1.1Host模式

 1.2Container模式

  1.3Bridge 模式(默认)

 1.4None模式(躺平)

  二.自定义网络

 2.1查看网络模式列表--docker network ls

  2.2查看容器信息(包含配置、环境、网关、挂载、cmd等等信息)--docker inspect 容器ID

  2.3指定分配容器IP地址

 2.4自定义网络固定ip

  三.暴露端口

 四.网络模式的总结

4.1进入容器没有systemctl命令怎么解决

 4.2Docker网络模式有哪些?分别提供哪些功能?

  4.3 docker中,假设运行一个业务容器,但是业务容器需要暴露三个端口,启动后发现自己少加了一个端口。如何动态添加端口(如何对已经运行的容器添加或者修改端口)?

一.四种网络模式

1.1Host模式

与宿主机共享网络名称空间\网络协议栈,IP共享,端口范围共享
  • host容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口范围。如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的 NetworkNamespace,而是和宿主机共用一个 Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如**文件系统、进程列表等还是和宿主机隔离的**。
  • 使用host模式的容器可以直接使用宿主机的Ip地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是**dockerhost 上已经使用的端口就不能再用了**,网络的隔离性不好。
  • 解决了ip地址不固定的情况

 

 1.2Container模式

有点像各个服务放在同一个宿主机上面这种情况
  • 创建的容器不会创建自己的网卡,配置自己的IP,而是**和一个指定的容器共享IP、端口范围(端口不能一致),只有一个容器有自己的网卡**,出去还是docker0进行通讯
  • 这个模式指定新创建的容器和**已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信** 

 

  1.3Bridge 模式(默认)

  • 此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及iptables nat表配置与宿主之间的关联
  • 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中
  • 从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建**一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中**。可以通过brctl show命令查看
  • bridge模式是docker的默认网络模式,不写–net参数,就是bridge模式。使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。

 1.4None模式(躺平)

该模式关闭了容器的网络功能
  • 使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等
  • 这种网络模式下容器**只有lo回环网络,没有其他网卡。**none模式可以在容器创建时通过–network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性
  • 可以安全的储存数据,不会被攻击,可以用来当个仓库

  二.自定义网络

 2.1查看网络模式列表--docker network ls

docker network ls

  2.2查看容器信息(包含配置、环境、网关、挂载、cmd等等信息)--docker inspect 容器ID

docker inspect  容器ID

  2.3指定分配容器IP地址

docker run -itd --name niuma --network bridge --ip 172.17.0.10 centos:7 /bin/bash
#以上会报错,因为用户使用的ip地址不被规则所允许,docker0定义的就是按照顺序来,所有需要创建一个

 2.4自定义网络固定ip

可以先自定义网络,再使用指定IP运行docker

docker network 【--network bridge】 create --subnet=172.18.0.0/16 niuma1
docker run -itd --name test02 --net niuma1 --ip 172.18.0.8 centos:7 /bin/bash

  三.暴露端口

  • 两个容器如果端口一致的情况下,暴露出去会产生地址冲突,所以需要在docker0上做一个端口映射,通过ens33暴露出去端口不同就可以了
  • -p自定义端口 ( 宿主机端口:容器内端口 )
  • -P随机端口 (-P 49153起始 49153到65535)
#自定义端口端口80 暴露到宿主机上的8081上
docker run -itd -p 8081:80 nginx:latest /bin/bash
#需要在容器中开启nginx
docker exec -it f282a476b06c /bin/bash -c nginx
#在网页测试
http://192.168.40.23:8081/# 随机端口
docker run -itd -P nginx:latest /bin/bash#在宿主机环境执行容器内命令
docker exec -it 容器ID /bin/bash -c 'nginx'
docker exec 容器ID/容器name 执行的命令

 首先定义端口号

 需要在容器中开启nginx

 测试能否打开nginx

 四.网络模式的总结

4.1进入容器没有systemctl命令怎么解决

docker run -itd  --name cenos_v1 --privileged=true centos:7 /sbin/init
docker exec -it cenos_v1 /bin/bash
在生产中我们往往不会这样设置,因为docker与系统共享内核的原因,这样做涉及到系统安全

 4.2Docker网络模式有哪些?分别提供哪些功能?

Host与宿主机共享网络名称空间/网络协议栈
Container多个容器直接共享一个network namespaces
None自闭空间
bridge默认模式通过Veth对连接容器与docker0网桥,网桥分配给容器IP,同时docker 0 作为“局域网“内容器的网关,最后和宿主机网卡进行通讯
overlay2使用联合挂载技术将容器层和镜像层所有的文件统一挂载到容器中,使容器中能看到完整的系统文件

  4.3 docker中,假设运行一个业务容器,但是业务容器需要暴露三个端口,启动后发现自己少加了一个端口。如何动态添加端口(如何对已经运行的容器添加或者修改端口)?

首先,我们可以修改/var/lib/docker/containers/containers_id中两个文件①hostconfig.json 中的 portbinding:{}修改端口或添加端口②修改config.v2.json文件,修改对应的Ports{}来添加/修改端口最后,重启守护进程。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux —— 文件系统

目录 一,背景 二,文件系统 一,磁盘简介 磁盘分为SSD、机械磁盘;机械磁盘,即磁盘高速转动,磁头移动到读写扇区所在磁道,让磁头在目标扇区上划过,即可完成对扇区的读写操作&#xff…

web后端解决跨域问题

目录 什么是跨域问题 为什么限制访问 解决 什么是跨域问题 域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。但是一般情况下不能这么做,它是由浏览器的同源策略造成的,是浏览器对js施加的安全…

【C++起飞之路】类和对象 —— 类

类 ~ ~ ~ 一、面向过程和面向对象初步认识a. 面向过程编程b. 面向对象编程例如:无人机送货系统1、面向过程编程方式2、面向对象编程方式 二、类的引入1、定义类的关键字2、栈的手动实现a. C语言实现栈b. C实现栈 三、类的定义类的两种定义方式: 四、类的…

基于IMX6ULLmini的linux裸机开发系列一:汇编点亮LED

思来想去还是决定记录一下点灯,毕竟万物皆点灯嘛 编程步骤 使能GPIO时钟 设置引脚复用为GPIO 设置引脚属性(上下拉、速率、驱动能力) 控制GPIO引脚输出高低电平 使能GPIO时钟 其实和32差不多 先找到控制LED灯的引脚,也就是原理图 文件名 C:/Us…

使用vscode进行远程调试

官方调试手册:vscode官方调试手册 1.安装python扩展 如果是远程连接的话,一定要在ssh上启用扩展。不然创建基于python的配置文件时就会提示,无python扩展。 2.新建配置文件,并修改参数 点击左侧第四个按钮,运行与调试…

k8s v1.27.4二进制部署记录

记录二进制部署过程 #!/bin/bash#升级内核 update_kernel() {rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgyum -y install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpmyum --disablerepo"*" --enablerepo"elrepo-kernel&q…

Swagger-ui在idea中的使用

1.添加依赖 <!--添加swagger2相关概念--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><!--添加swagger-ui相关功能--><de…

浅谈Spring与字节码生成技术

概要 今天来谈一谈我们熟知的Spring框架和字节码技术有什么联系。 Java程序员几乎都了解Spring。 它的IoC&#xff08;依赖反转&#xff09;和AOP&#xff08;面向切面编程&#xff09;功能非常强大、易用。而它背后的字节码生成技术&#xff08;在运行时&#xff0c;根据需要…

带你了解—使用内网穿透,公网远程访问本地硬盘文件

文章目录 前言1. 下载cpolar和Everything软件3. 设定http服务器端口4. 进入cpolar的设置5. 生成公网连到本地内网穿透数据隧道 总结 前言 随着云概念的流行&#xff0c;不少企业采用云存储技术来保存办公文件&#xff0c;同时&#xff0c;很多个人用户也感受到云存储带来的便利…

带你了解SpringBoot支持的复杂参数--自定义对象参数-自动封装

&#x1f600;前言 本篇博文是关于SpringBoot 在响应客户端请求时支持的复杂参数和自定义对象参数&#xff0c;希望您能够喜欢&#x1f60a; &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章…

FPGA GTP全网最细讲解,aurora 8b/10b协议,OV5640摄像头板对板视频传输,提供2组4套工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 GT 高速接口解决方案3、GTP 全网最细解读GTP 基本结构GTP 发送和接收处理流程GTP 的参考时钟GTP 发送接口GTP 接收接口GTP IP核调用和使用 4、设计思路框架OV5640摄像头配置及采集视频数据组包GTP aurora 8b/10b数据对齐视频数据解包图像…

Oracle外部表ORACLE_LOADER方式加载数据

当数据源为文本或其它csv文件时&#xff0c;oracle可通过使用外部表加载数据方式&#xff0c;不需要导入可直接查询文件内的数据。 1、如下有一个文件名为&#xff1a;test1.txt 的数据文件。数据文件内容为&#xff1a; 2、使用sys授权hr用户可读写 DATA_PUMP_DIR 目录权限&a…

苹果支付的实现

由于app经常需要用到支付功能&#xff0c;然而ios用户&#xff0c;是无法用支付宝、微信进行支付&#xff0c;这时候只能用到苹果支付。苹果支付是苹果公司推出的一种在线支付方式&#xff0c;用户可以通过苹果支付购买应用、内购道具等等。 原理 苹果支付的实现原理是通过在…

力扣75——多维动态规划

总结leetcode75中的多维动态规划算法题解题思路。 上一篇&#xff1a;力扣75——一维动态规划 力扣75——多维动态规划 1 不同路径2 最长公共子序列3 买卖股票的最佳时机含手续费4 编辑距离1 - 4 解题总结 1 不同路径 题目&#xff1a; 一个机器人位于一个 m x n 网格的左上角…

Python发送QQ邮件

使用Python的smtplib可以发送QQ邮件&#xff0c;代码如下 #!/usr/bin/python3 import smtplib from email.mime.text import MIMEText from email.header import Headersender 111qq.com # 发送邮箱 receivers [222qq.com] # 接收邮箱 auth_code "abc" # 授权…

力扣 518. 零钱兑换 II

题目来源&#xff1a;https://leetcode.cn/problems/coin-change-ii/description/ C题解&#xff08;来源代码随想录&#xff09;&#xff1a; 这是一道典型的背包问题&#xff0c;一看到钱币数量不限&#xff0c;就知道这是一个完全背包。但本题和纯完全背包不一样&#xff0c…

【AI大模型】训练Al大模型 (上篇)

大模型超越AI 前言 洁洁的个人主页 我就问你有没有发挥&#xff01; 知行合一&#xff0c;志存高远。 目前所指的大模型&#xff0c;是“大规模深度学习模型”的简称&#xff0c;指具有大量参数和复杂结构的机器学习模型&#xff0c;可以处理大规模的数据和复杂的问题&#x…

K8S系列一:概念入门

写在前面 本文组织方式&#xff1a; K8S的架构、作用和目的。需要首先对K8S整体有所了解。 K8S是什么&#xff1f; 为什么是K8S&#xff1f; K8S怎么做&#xff1f; K8S的重要概念&#xff0c;即K8S的API对象。要学习和使用K8S必须知道和掌握的几个对象。 Pod 实例 Volume 数…

修改 el-select 背景图 样式

1. 原图------------效果图 2. css /***********大的背景图***************/ .el-popper.is-pure {background: url(/src/assets/imgList/memuBG.png) no-repeat;border: none;background-size: 100% 100%; }/*********选中行的字体***********/ .el-select-dropdown__item.s…

pytest运行时参数说明,pytest详解,pytest.ini详解

一、Pytest简介 1.pytest是一个非常成熟的全功能的Python测试框架&#xff0c;主要有一下几个特点&#xff1a; 简单灵活&#xff0c;容易上手&#xff0c;支持参数化 2.能够支持简单的单元测试和复杂的功能测试&#xff0c;还可以用来做selenium、appium等自动化测试&#xf…