• Docker的网络与容器资源的控制


    docker的网络

    docker网络模式主要分为四类

    • host:在这种模式下,新创建的容器不会获得自己的网络命名空间,而是与宿主机共享。这意味着容器会使用宿主机的 IP 地址和端口,并且宿主机的网络配置(如 iptables 规则)会影响容器。

    • Container:当docker创建一个镜像时会指定一个已存在的容器共享网络命名空间,即多个镜像使用同一个IP、端口范围(容器与宿主机/同模式的容器不可以相同的端口号)、路由、iptables规则等

    • none模式: 指每一个镜像都拥有一个独立的网络命名空间但是 none没有ip、网卡、端口,只有lo回环网卡,这种模式下容器无法访问网络。

    • bridge模式:这是Docker的默认模式 在 bridge 模式下,Docker 会创建一个名为 docker0 的虚拟网桥,并为每个新创建的容器分配一个唯一的网络命名空间。在每个网络命名空间内,Docker 会为容器创建一个虚拟网络接口,并将该接口连接到 docker0 网桥上。这样,容器就可以通过这个网桥与其他容器或宿主机上的服务进行通信。

    指定容器的网络模式

    指定host模式

    host模式寄主机与容器共享IP、端口号,故不用指定端口号,我将搭建一台jellyfin来做演示 jellyfin的端口号默认是8096

    docker run -d --name jellyfin1  --network=host  544d674913bc
    
    • 1

    在这里插入图片描述
    查看容器IP

    docker inspect a2da60ca9d96 |grep IPAddress
    
    • 1

    在这里插入图片描述
    访问8096端口查看是否正常使用
    在这里插入图片描述
    jellyfin服务正常

    指定Container模式

    我将要搭建一个container模式的nginx容器nginx默认端口号是80

    docker run -d --name nginx0 --network=container:a2da60ca9d96 nginx
    
    • 1

    这会分配与jellyfin使用同一个网络命名空间,jellyfin与寄主机同一个IP故访问宿主机80端口就能访问NGIXN主页。
    在这里插入图片描述
    在这里插入图片描述
    这样不够直观,我将创建一个bridge模式的主机后再来演示

    docker run -d --name j2  -P  jellyfin/jellyfin
    
    • 1

    默认bridge创建了一个jellyfin再创建一个nginx

    在这里插入图片描述
    查看容器的pid号

    docker inspect -f '{{.State.Pid}}'
    
    • 1

    在这里插入图片描述

    ll /proc/110497/ns
    
    • 1

    在这里插入图片描述
    相同操作查看j2的net空间
    在这里插入图片描述
    可以看到net空间是相同的

    指定bridge模式

    bridge模式不用特别指定,他是docker的默认模式
    在这里插入图片描述

    Docker资源的控制

    在Docker中,cgroups被用来实现容器的资源隔离和限制

    CPU资源的限制

    在docker 中每100000μs为一个CPU运行的周期,在创建容器时可以指定在一个周期内,cpu处理容器的时间是多少,如我想让在100000μs中有6000μs处理这个容器可以如下设置 就是占用cpu百分之6

    docker run -itd --name test1 --cpu-quota 6000 centos:7 /bin/bash
    
    • 1

    在这里插入图片描述
    进入容器,编写测试脚本

    #!/bin/bash
    i=0
    while true
    do
    let i++
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    运行测试脚本,测试CPU使用率
    在这里插入图片描述
    可以看到容器占用CPU为6%

    对内存使用的限制

    使用 -m 来限制容器对内存的使用大小

    docker -itd --name test2 -m 256M centos:7 /bin/bash
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    Win10系统总是重复安装更新怎么办?
    RemObjects Suite Subscription for Delphi
    ONVIF学习笔记11:搜索设备不匹配问题排查
    基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(二)数据源
    纯前端 excel 导出
    MySQL基本语句
    分库分表已成为过去式,使用分布式数据库才是未来
    JSP setProperty动作
    时光机特效什么app好?建议收藏这些软件
    chrome历史版本下载
  • 原文地址:https://blog.csdn.net/weixin_55707333/article/details/138161676