Docker容器引擎(2)

目录

一.批量删除镜像,容器

二.Docker 网络实现原理

随机映射端口(从32768开始)

访问自己:

在10服务器上配置路由转发:

指定映射端口:

查看容器的输出和日志信息:

将宿主机目标|文件挂载到容器的数据卷:

先在宿主机上添加文件:

​编辑

创建只能读的权限的容器:

创建共享数据卷容器的数据卷:​编辑

可实现在容器内通过目标容器名或连接别名与目标容器通信:

三.docker网络模式

设置容器的网络模式:

创建网络模式:

查看c1容器进程号:

查看c3容器进程号:

四.资源控制

1.CPU 资源控制

进入id号中,查看容器进程能够使用的最大CPU时间 cpu.cfs_quota_us 文件:

查看单个CPU调度周期时间 cpu.cfs_period_us文件:

进行CPU压力测试:

设置50%的比例分配CPU使用时间上限:

设置多个容器的CPU占用份额(只能在多个容器同时运行且CPU资源紧张时生效):

分别进入容器,进行压力测试

​编辑​编辑​编辑

​编辑

​编辑

​编辑

​编辑

将t改为2:

​编辑

​编辑

设置容器绑定指定的CPU


一.批量删除镜像,容器

格式:docker rm [-f] 容器ID/名称

docker images | awk 'NR>=2{print "docker rmi "$3}' | bash

docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash    


docker rm $(docker ps -a -q)   :批量清理后台停止的容器

二.Docker 网络实现原理

Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的 Container-IP 直接通信。
Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法直接通过 Container-IP 访问到容器。如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即 docker run 创建容器时候通过 -p 或 -P 参数来启用,访问容器的时候就通过[宿主机IP]:[容器端口]访问容器。

随机映射端口(从32768开始)
 

docker run -d --name test1 -P nginx

访问自己:

另一台服务器访问会卡顿,需要开启路由转发:

在10服务器上配置路由转发:

再次访问:

指定映射端口:

docker run -d --name test2 -p 43000:80 nginx

查看容器的输出和日志信息:

docker logs 容器的ID/名称

将宿主机目标|文件挂载到容器的数据卷:

docker run -d  -v 宿主机绝对路径:容器绝对路径[:ro] : 将宿主机目标|文件挂载到容器的数据卷:[权限]

docker run -d   --volumes-from 数据卷容器名 :  共享数据卷容器的数据卷

先在宿主机上添加文件:

进入容器test3中看下:

可以给文件进行写入查看:

 

创建只能读的权限的容器:

创建共享数据卷容器的数据卷:

可实现在容器内通过目标容器名或连接别名与目标容器通信:

docker run -d   --link 目标容器名:连接别名

docker inspect c1 |grep -i ipaddress

删除c1,在创建c1:

创建容器与目标容器通信:

三.docker网络模式


bridge


docker的默认网络模式。使用此模式的每个容器都有独立的网络命名空间namespace,即每个容器都有独立的IP、端口范围(每个容器可以用同一个端口)、路由、iptables规则等网络资源。
docker run [--network=bridge] ....

host


容器与宿主机共享网络namespace,即容器和宿主机使用同一个IP、端口范围(容器与宿主机或其它使用host模式的容器不能用同一个端口)、路由、iptables规则等网络资源。
docker run --network=host ....

container


和指定已存在的容器共享网络namespace,即这两个容器使用同一个IP、端口范围(容器与指定的容器不能用同一个端口)、路由、iptables规则等网络资源。
docker run --network=container:容器名|容器ID ....

none


每个容器都有独立的网络namespace,但是容器没有自己的eth0网卡、IP、端口等,只有lo网卡。
docker run --network=none ....

自定义网络


可以用来自定义创建一个网段、网桥、网络模式,从而可以创建容器时自定义容器IP
docker network create --subnet 自定义网段 --opt "com.docker.network.bridge.name"="自定义网桥名"  自定义网络模式名
docker run --network 自定义网络模式名  --ip 自定义容器IP ....

设置容器的网络模式:

docker run -d  --network bridge|host|none|container:容器名或ID

查看当前的网络模式:

删除所有容器:

创建网络模式:

默认bridge模式,container模式:

c2 与c1共享一个ip端口,c1的80端口开启了,c2就不行。

查看c1容器进程号:

docker inspect -f '{{.State.Pid}}'  容器名/id

创建c3:

查看ip号:

查看容器的进程、网络、文件系统等命名空间编号:

查看c3容器进程号:

none模式:

四.资源控制

Docker 通过 Cgroup 来控制容器使用的资源配额,包括 CPU、内存、磁盘三大方面, 基本覆盖了常见的资源配额和使用量控制。

cgroup资源限制(限制容器进程对CPU 内存 磁盘IO 等资源的最大使用量)

1.CPU 资源控制

设置CPU使用率上限:

Linux通过CFS(Completely Fair Scheduler,完全公平调度器)来调度各个进程对CPU的使用。CFS默认的调度周期是100ms。
我们可以设置每个容器进程的调度周期,以及在这个周期内各个容器最多能使用多少 CPU 时间。
 

docker run -itd --name test5 centos:7 /bin/bash

cd /sys/fs/cgroup/cpu/docker:查看容器的id位置

进入id号中,查看容器进程能够使用的最大CPU时间 cpu.cfs_quota_us 文件:

表示该cgroups限制占用的时间(微秒),默认为-1,表示不限制。

如果设为50000,表示占用50000/100000=50%的CPU。

查看单个CPU调度周期时间 cpu.cfs_period_us文件:

cpu分配的周期(微秒,所以文件名中用 us 表示),默认为100000。

进行CPU压力测试:

docker exec -it   容器名/id /bin/bash :进入容器

写个脚本:

#!/bin/bash
i=0
while true
do
let i++
done

赋予权限:

执行脚本:

开个终端测试查看一下:

可以看到这个脚本占了很多的cpu资源。

设置50%的比例分配CPU使用时间上限:

可以重新创建一个容器并设置限额:

docker run -itd --name test6 --cpu-quota 50000 centos:7 /bin/bash

查看下test6的限额:

看下占用情况:

控制到50%左右。

设置多个容器的CPU占用份额(只能在多个容器同时运行且CPU资源紧张时生效):

docker run  -itd --name 容器名  --cpu-shares 容器进程最大占用CPU的份额(值为1024的倍数)  镜像

分别进入容器,进行压力测试

测试:

将t改为2:

可以看到在 CPU 进行时间片分配的时候,容器 c2 比容器 c1 多一倍的机会获得 CPU 的时间片。

设置容器绑定指定的CPU

docker run -itd --name test8 -m 512m centos:7 /bin/bash

如果 --memory-swap 设置为 0 或者 不设置,则容器可以使用的 swap 大小为 -m 值的两倍。
如果 --memory-swap 的值和 -m 值相同,则容器不能使用 swap。
如果 --memory-swap 值为 -1,它表示容器程序使用的内存受限,而可以使用的 swap 空间使用不受限制(宿主机有多少 swap 容器就可以使用多少)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

司铭宇老师:员工心态培训:正确对待工作的七种心态:让你在工作中游刃有余

员工心态培训:正确对待工作的七种心态:让你在工作中游刃有余 工作,是我们生活的核心组成部分。它不仅关乎我们的物质生活,更影响着我们的精神世界。如何在工作中找到平衡,实现自我价值,成为许多人心中的困…

oracle19.22的patch已发布

2024年01月16日,oracle发布了19.22的patch 具体patch如下 Reserved for Database - Do not edit or delete (Doc ID 19202401.9) 文档ID规则如下 19(版本)+年份(202x)+(季度首月01,04,07,10).9 往期patch no信息和下载参考文档 oracle 19C Release Update patch num…

Allegro因为精度问题导致走线未连接上的解决办法

Allegro因为精度问题导致走线未连接上的解决办法。还有在用Allegro进行PCB设计时,因为不小心操作移动了芯片,导致导线和引脚未连接上,也可以使用这个方法。 选择菜单Tools→Derive Connectivity(获取连接) 跳出下面的对话框, Convert Line to Connect Lines

SQL注入实战:宽字节注入

一、宽字节概率 1、单字节字符集:所有的字符都使用一个字节来表示,比如 ASCII编码(0-127) 2、多字节字符集:在多字节字符集中,一部分字符用多个字节来表示,另一部分字符(可能没有)用 单个字节来表示。 3、宽字节注入是利用mysql的一个特性…

人工智能在教学领域中有哪些运用?

人工智能在教学领域中可以有以下几种运用: 1. 智能辅助教学:利用人工智能技术开发出智能辅助教学系统,根据学生的学习状态和知识背景,提供个性化的学习路径和推荐的学习资源,帮助学生更好地掌握知识。 2. 自适应评估…

如何使用宝塔面板配置Nginx反向代理WebSocket(wss)

本章教程,主要介绍一下在宝塔面板中如何配置websocket wss的具体过程。 目录 一、添加站点 二、申请证书 三、配置代理 1、增加配置内容 2、代理配置内容 三、注意事项 一、添加站点 二、申请证书 三、配置代理 1、增加配置内容 map $http_upgrade $connection_…

Biotin-PEG4-TSA,生物素-PEG4-酪胺,用于标记蛋白质、核酸等生物分子

您好,欢迎来到新研之家 文章关键词:Biotin-PEG4-Tyramide,Biotin-PEG4-TSA,生物素-PEG4-酪胺,Biotin PEG4 Tyramide,Biotin PEG4 TSA 一、基本信息 产品简介:Biotin PEG4 Tyramide is compos…

【力扣每日一题】力扣2859计算k位置下标对应元素的和(bitCount源码分析及实现)

题目来源 力扣2859计算k位置下标对应元素的和 题目概述 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 请你用整数形式返回 nums 中的特定元素之 和 ,这些特定元素满足:其对应下标的二进制表示中恰存在 k 个置位。 整数的二进制表示中的 1…

老子云-三维模型优化

轻量化服务 减面模式 适用于家装、游戏、电商产品等需要保留部件且精细结构多的模型 保留原始模型网格对象、UV和动画,仅使模型网格更轻量,新增GPU减面模式(限时体验),省时更精细 合并模式 不保留原始模型网格和动画,适用于数…

【linux】远程桌面连接到Debian

远程桌面连接到Debian系统,可以使用以下几种工具: 1. VNC (Virtual Network Computing) VNC(Virtual Network Computing)是一种流行的远程桌面解决方案,它使用RFB(Remote Framebuffer Protocol&#xff0…

系统引导程序 Boot Loader——学习笔记

基于嵌入式Linux 的完整系统软件由三个部分组成:系统引导程序、Linux 操作系统内核和文件系统。 系统引导程序 Boot Loader 是系统加电后运行的第一段软件代码,它的作用是加载操作系统或者其他程序到内存中,并将控制权交给它们。 Boot Load…

nodejs学习计划--(六)包管理工具

包管理工具 1. 介绍 包是什么 『包』英文单词是 package ,代表了一组特定功能的源码集合包管理工具 管理『包』的应用软件,可以对「包」进行 下载安装 , 更新 , 删除 , 上传 等操作 借助包管理工具,可以快…

无人机航迹规划(五):七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划(提供MATLAB代码)

一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

SpringMVC第四天(SSM整合)

SSM整合流程 1.创建工程 2.SSM整合 ①Spring SpringConfig package com.cacb.config;import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import;…

解析半导体放电管TSS的原理与应用?|深圳比创达电子

随着电子技术的迅速发展,半导体放电管(TSS)已成为电路保护的重要组件。本文旨在全面深入解析半导体放电管TSS的原理与应用,帮助读者更好地理解这一关键元件。 一、半导体放电管TSS的概念与原理 半导体放电管TSS是一种用于保护电…

sheng的学习笔记-神经网络

基础知识 基础知识-什么是分类问题 分类问题是根据已有数据,判断结果是正的还是负的(1或者0),比如: • 根据肿瘤大小,判断肿瘤是良性的还是恶性的 • 根据客户交易行为,判断是否是恶意用户 • 根据邮件情况…

司铭宇老师:手机门店销售培训:手机销售的技巧和方法

手机门店销售培训:手机销售的技巧和方法 在当今这个信息化的时代,手机已经成为了我们生活中不可或缺的一部分。作为手机销售人员,如何在这个竞争激烈的市场中突出重围,实现销售目标,是每一位销售人员都需要思考的问题。…

Unity出AAB包资源加载过慢

1)Unity出AAB包资源加载过慢 2)Unity IL2CPP打包,libil2cpp.so库中没有Mono接口 3)如何在URP中正确打出Shader变体 4)XLua打包Lua文件粒度问题 这是第370篇UWA技术知识分享的推送,精选了UWA社区的热门话题&…

Dify学习笔记-知识库(六)

1、知识库 大多数语言模型采用较为陈旧的训练数据,并且对每次请求的上下文有长度限制。例如 GPT-3.5 是基于 2021 年的语料进行训练的,且有每次约 4K Token 的限制。这意味着开发者如果想让 AI 应用基于最新的、私有的上下文对话,必须使用类…

C语言实现快速排序算法(附带源代码)

快速排序 在区间中随机挑选一个元素作基准,将小于基准的元素放在基准之前,大于基准的元素放在基准之后,再分别对小数区与大数区进行排序。 动态效果过程演示: 快速排序(Quick Sort)是一种常用的排序算法&…