首页 > 其他分享 >Docker 网络和资源控制

Docker 网络和资源控制

时间:2023-08-16 16:14:07浏览次数:38  
标签:容器 IP 宿主机 网络 Docker docker 资源

Docker 网络保证容器提供服务,确保网络的通信。资源控制确保宿主机不被容器抢占所有资源。  

目录

一、Docker 网络实现原理

二、Docker 的网络模式

三、CPU 资源控制

四、总结

 

 

 

 

 

一、Docker 网络实现原理

  1.Docker 网络实现原理

    (1)Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的 Container-IP 直接通信。

    (2)Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法直接通过 Container-IP 访问到容器。如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即 docker run 创建容器时候通过 -p 或 -P 参数来启用,访问容器的时候就通过[宿主机IP]:[容器端口]访问容器。

docker run -d --name test1 -P nginx					#随机映射端口(从32768开始)

 

docker run -d --name test2 -p 43000:80 nginx		#指定映射端口

 

浏览器访问:http://192.168.140.111:40000

#查看容器的输出和日志信息
docker logs 容器的ID/名称  

 

 

 

二、Docker 的网络模式 

  1.Docker 的网络模式    

    ●Host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
    ●Container:创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。
    ●None:该模式关闭了容器的网络功能。
    ●Bridge:默认为该模式,此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及iptables nat 表配置与宿主机通信。
    ●自定义网络

  2.docker网络列表

    安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host

docker network ls	 或  docker network list			#查看docker网络列表

  

   3.指定容器  

    #使用docker run创建Docker容器时,可以用 --net 或 --network 选项指定容器的网络模式
    ●host模式:使用 --net=host 指定。
    ●none模式:使用 --net=none 指定。
    ●container模式:使用 --net=container:NAME_or_ID 指定。
    ●bridge模式:使用 --net=bridge 指定,默认设置,可省略。

  4.网络模式详解  

    1.host模式    

    相当于Vmware中的桥接模式,与宿主机在同一个网络中,但没有独立IP地址。
    Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。
    一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、iptable规则等都与其他的Network Namespace隔离。 一个Docker容器      一般会分配一个独立的Network Namespace。 但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace, 而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡、配置自己的IP等,而是使用宿主机的IP和端口。

    如图所示:

   2.container模式   

    在理解了host模式后,这个模式也就好理解了。这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。

  

docker run -itd --name test1 centos:7 /bin/bash			#--name 选项可以给容器创建一个自定义名称 
docker ps -a
docker inspect -f '{{.State.Pid}}' 3ed82355f811			#查看容器进程号
ls -l /proc/25495/ns					#查看容器的进程、网络、文件系统等命名空间编号

 

 

docker run -itd --name test2 --net=container:3ed82355f811 centos:7 /bin/bash
docker ps -a
docker inspect -f '{{.State.Pid}}' ff96bc43dd27
27123
ls -l /proc/27123/ns			#查看可以发现两个容器的 net namespace 编号相同

  

 

三、CPU 资源控制

 

四、总结

 

标签:容器,IP,宿主机,网络,Docker,docker,资源
From: https://www.cnblogs.com/zhende/p/17635177.html

相关文章

  • js网络请求
    varxhr=newXMLHttpRequest();xhr.withCredentials=false;xhr.open('post','http://localhost:20100/API/Wms/GetDeliveryDate',true);//请求超时的时间(单位:毫秒)xhr.timeout=3000;//xhr.open('post','http://supply.zhglory.com.cn:90......
  • 100个网络知识,懂一半绝对高手!
    中午好,我的网工朋友。咱网工找工作的时候,招聘岗位上,都会有好几个大差不差的指标。比如说,相关专业、啥等级的厂商证书,又或是熟悉网络基础知识等等,对吧。那这个网络基础知识,就很灵性了,这么多网络知识,到底都有啥,你真的知道吗?为了避免在面试过程中卡壳,又或是想再给自己的网工技术打打地......
  • 参加网络安全培训需要什么基础?学多久?
    目前,网络安全处于高速发展阶段,其薪资、发展前景都非常不错,因此吸引了一大波人前来学习。然而在学习网络安全之前,很多人总会产生一些顾虑,因此犹豫不决,那么学网络安全需要什么基础?对学历有要求吗?以下是具体的内容介绍。学网络安全需要什么基础?如果你想要参加培训学习......
  • docker命令学习
    docker镜像命令:                      退出:exit           退出但是不停止运行:Ctrl+p+q 删除容器:rm容器iddockerimages  查看镜像dockersearch 镜像名称 ......
  • 网工内推 | 网络工程师专场,CCNP证书优先,多次晋升机会
    01上海正诺信息科技有限公司招聘岗位:网络工程师职责描述:1、负责公司办公内网内网需求对接、实施和方案的标准化;2、负责办公网络、机房的网络设备(接入层)的运维、变更、故障解决;3、负责公司网络系统应用的维护,管理及故障排除等工作;4、管理和维护网络相关IT设备周边资产、生命周期管......
  • Docker镜像
    测试FROM指定基础镜像所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。就像我们之前运行了一个nginx镜像的容器,再进行修改一样,基础镜像是必须指定的。而FROM就是指定基础镜像,因此一个Dockerfile中FROM是必备的指令,并且必须是第一条指令。除了选择现有镜像为基......
  • 利用Python隧道ip轻松构建全局爬虫网络
    嘿,爬虫程序员们!你们有没有碰到过需要大规模数据爬取的情况?也许你们之前遇到过网站的反爬措施,卡住你们的进度。别担心,今天我来分享一个利用Python隧道爬虫ip实现的方法,帮助你们轻松搭建全局爬虫ip网络,解决反爬的难题。首先,我们要明白什么是隧道爬虫ip隧道爬虫ip,顾名思义,就是在网络上......
  • 工业交换机在雪亮工程中的应用:构建智慧城市的坚实网络基础
    “雪亮工程”即公共安全视频监控建设联网应用,是为响应国家“十三五”治安防控体系建设要求,同时为达到预警、预测、预防效果,以农村、社区为重点,对重要部位、复杂场所、农村薄弱地区进行视频监控建设,实现城乡治安防控建设一体化、立体化、信息化的社会治安防控体系工程。随着科技的不......
  • 基于Jenkins+Python+Ubuntu+Docker的接口/UI自动化测试环境部署详细过程
    (基于Jenkins+Python+Ubuntu+Docker的接口/UI自动化测试环境部署详细过程)1Jenkins是什么?学习官网:Jenkins官网,Jenkins中文官网;Jenkins是一款开源CI&CD软件,用于自动化各种任务,包括构建、测试和部署软件;用Java语言编写的,可在Tomcat、Docker等流行的容器中运行,也可独立运行。......
  • 免费获得静态IP资源实操方法
    今日与大家分享不同的获取固定IP资源的方法,我会用简单的方式解释清楚,让你可以轻松上手,享受更好的网络服务。首先,我们先来了解一下什么是静态IP。简单说,静态IP就是不会变的IP地址,和动态IP相对应。动态IP是由你的网络服务提供商动态分配的,每次重新连接网络时都会获得一个新的IP地址。......