docker容器启动的问题 - docker容器和虚拟机的比较 - docker的底层隔离机制

目录

一、docker容器启动的问题?

二、什么是docker仓库?

三、虚拟机和docker容器的区别:

docker的优势:

docker的缺点:

对比:

四、docker的底层隔离机制

参考文献:LXC linux容器简介——在操作系统层次上为进程提供的虚拟的执行环境,限制其使用的CPU和mem等资源,底层是linux内核资源管理的cgroups子系统 - bonelee - 博客园 (cnblogs.com)

1.LXC是什么?

2.LXC可以做什么?

3.namespqce命令空间:

4.cgroup是什么,它的作用是什么?


一、docker容器启动的问题?

当我们需要重新启动docker容器的时候,我们将使用

service docker restart   

但是会产生问题,就是我们的docker内正在运行的容器全部都停止了,因此我们在使该命令的时候,一定要注意该问题 。   

当我们启动docker的时候,会自动帮助我们生成iptabels规则

当我们清除iptables内的规则后,会导致docker容器不能和外部机器通信

解决方法就是重新启动docker容器,会重新添加iptables规则

因此当我们在docker容器运行的时候,关闭防火墙或者清除防火墙规则的时候,会导致iptables里的docker相关的SNAT或者DNAT策略失效,导致容器不能和外部的机器通信

重新启动docker容器 

(建议一个容器里只跑一个软件)

二、什么是docker仓库?

就是集中存放镜像的地方(像是镜像的集市,可以下载别人制作的镜像)

docker hub官网(https://hub.docker.com/)

我们能自己搭建私有仓库:(HarBor、Docker Registry)一文教会你如何高效地搭建Docker私有仓库_docker_脚本之家 (jb51.net)

三、虚拟机和docker容器的区别:

官方文档解释:What is a Container? | Docker

docker的优势:

1、启用速度快

2、资源消耗小

        资源消耗可以控制、如cpu和内存、磁盘速度和iops等

        共用宿主机器的内核、基础镜像、消耗的内存小

3、扩展方便

        HPA

        增加和减少容器

docker的缺点:

在app隔离这块、没有虚拟机彻底 

虚拟机的安全性要高于docker

对比:

并且docker和虚拟机的层次不一样,其中虚拟机会多一层封装

四、docker的底层隔离机制

所有的容器运行起来都是一个进程

进程与进程之间的隔离是靠操作系统来完成的        

所有的进程都是共享linux操作系统的内核的

Docker底层的隔离机制主要包括以下两个方面:

  1. 基于Linux内核的命名空间(Namespace):Docker使用了Linux内核提供的六种类型的命名空间,包括Mount Namespace、UTS Namespace、IPC Namespace、PID Namespace、Network Namespace和User Namespace。通过这些命名空间,Docker实现了不同容器之间的隔离,每个容器都拥有自己独立的系统资源视图和命名空间。

  2. 基于Linux内核的控制组(CGroup):Docker使用了Linux内核提供的cgroups机制,通过对不同的进程组进行资源限制、控制和统计,实现了对容器内资源的限制和管理。例如,Docker可以使用cgroups来限制容器内进程的CPU、内存、磁盘I/O等资源使用。

总的来说,Docker是通过结合Linux内核提供的命名空间和cgroups机制来实现容器隔离和资源管理的。这种机制可以实现快速启动、轻量级的容器态虚拟化,同时也能够提高资源利用率和系统安全性。

参考文献:LXC linux容器简介——在操作系统层次上为进程提供的虚拟的执行环境,限制其使用的CPU和mem等资源,底层是linux内核资源管理的cgroups子系统 - bonelee - 博客园 (cnblogs.com)

1.LXC是什么?

LXC是Linux containers的简称,是一种基于容器的操作系统层级的虚拟化技术

2.LXC可以做什么?

LXC可以在操作系统层次上为进程提供的虚拟的执行环境,一个虚拟的执行环境就是一个容器。可以为容器绑定特定的cpu和memory节点,分配特 定比例的cpu时间、IO时间,限制可以使用的内存大小(包括内存和是swap空间),提供device访问控制,提供独立的namespace(网络、 pid、ipc、mnt、uts)。

3.namespqce命令空间:

namespace 叫做命名空间:命名空间可以用来隔离资源

namespace是Linux内核提供的一种机制,用于隔离进程间共享的系统资源。通过namespace,一个进程可以看到自己所使用的系统资源,而看不到其他进程所使用的系统资源。        

通过namespace,可以实现在同一台计算机上运行多个相互独立的进程,每个进程可以有自己独立的系统视图和资源空间,不同进程之间互相隔离,从而提高了安全性和可靠性。

Linux内核提供了以下6种类型的命名空间:

  1. Mount Namespace(挂载命名空间):用于隔离文件系统挂载点,每个挂载命名空间都有自己独立的文件系统树和挂载点列表。

  2. UTS Namespace(UTS命名空间):用于隔离主机名和域名,每个UTS命名空间都有自己独立的主机名和域名。

  3. IPC Namespace(IPC命名空间):用于隔离进程间通信(IPC)资源,包括消息队列、共享内存段和信号量等。

  4. PID Namespace(PID命名空间):用于隔离进程ID,每个PID命名空间都有自己独立的进程ID空间,这使得进程可以在容器中运行,而不会干扰宿主机上的其他进程。

  5. Network Namespace(网络命名空间):用于隔离网络资源,包括网络接口、路由表、iptables规则、/proc/net目录等。

  6. User Namespace(用户命名空间):用于隔离用户ID和组ID,每个用户命名空间都有自己独立的用户ID和组ID,这可以帮助防止未授权的访问和提高安全性。

通过这些命名空间,Linux内核可以为不同的应用程序提供独立的运行环境,实现各种隔离和虚拟化技术。

4.cgroup是什么,它的作用是什么?

cgroup(Control Group)是Linux内核提供的一种机制,用于限制、控制和统计进程组的资源使用。通过cgroup,可以将一组进程与一个或多个资源控制器相关联,从而限制它们可以使用的CPU、内存、I/O等系统资源。

具体来说,cgroup可以实现以下功能:

  1. 限制CPU使用:通过cgroup,可以限制一组进程能够使用的CPU时间片数,以及CPU使用率等。

  2. 限制内存使用:通过cgroup,可以限制一组进程能够使用的内存大小,以及内存交换、OOM行为等。

  3. 控制磁盘I/O使用:通过cgroup,可以限制一组进程能够使用的磁盘I/O带宽和IOPS等。

  4. 统计资源使用:通过cgroup,可以统计一组进程所使用的各种资源的使用情况,如CPU时间、内存使用等。

cgroup在容器技术等领域被广泛应用,可以帮助实现对容器资源的隔离和管理。例如,在Docker容器中,使用cgroup可以限制容器的CPU、内存和磁盘I/O使用,从而保证容器之间互不干扰,提高容器的可靠性和安全性。

 

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

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

相关文章

图像 检测 - CenterNet: Objects as Points (arXiv 2019)

CenterNet: Objects as Points - 目标作为点(arXiv 2019) 摘要1. 引言2. 相关工作3. 准备工作4. 目标作为点4.1 3D 检测4.2 人体姿态估计 5. 实施细节6. 实验6.1 目标检测6.1.1 附加实验 6.2 3D 检测6.3 姿态估计 7. 结论References附录A:模型…

【C数据结构】动态顺序表_SeqList

目录 【1】数据结构概述 【1.1】什么是数据结构? 【1.2】数据结构分类 【1.3】数据结构术语 【2】数据结构特点 【2】动态顺序表 【2.1】动态顺序表定义数据结构和接口 【2.1】动态顺序表创建初始化 【2.2】动态顺序表初始化 【2.3】动态顺序表内存释放 【…

mac电脑储存内存越来越小如何清理释放空间?

如果你是一位Mac系统的用户,可能会发现你的电脑储存空间越来越小。虽然Mac系统设计得非常优秀,但是系统数据和垃圾文件也会占据大量的储存空间。在这篇文章中,我们将探讨mac系统数据怎么这么大,以及mac清理系统数据怎么清理。 一…

万字详解常用设计模式

本文是博主在工作中对常用设计模式的使用经验总结归纳而来分享给大家。 设计模式一共有23种,本文讲解涉及如下: 责任链模式 模板方法模式 发布订阅模式 策略模式 三大分类 业界一般将设计模式分为三大类: 创建型模式:对类的实…

5、产品经理的工作职责OR主要工作技能和工具

1、产品经理的工作职责 我们通过一个案例来了解产品经理的工作职责。 老板让你给他点餐,你应该怎么做?你需要考虑哪一些方面的问题? 例如:你预算多少,预算是十块钱还是100块还是1000块。有没有忌口,口味…

Kafka详解(一)

第1章 Kafka概述 1.1 定义 1.2 消息队列 目前企业中比较常见的消息队列产品主要有Kafka、ActiveMQ、RabbitMQ、RocketMQ等。Message Queue ② 在大数据场景主要采用Kafka作为消息队列 ② 在JavaEE开发中主要采用ActiveMQ、RabbitMQ、RocketMQ Kafka存储数据,且保证…

「网络编程」第一讲:初识网络_网络基础1

「前言」文章是关于网络编程方面的,今天内容大致是网络基础,讲解下面开始! 「归属专栏」网络编程 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」 「每篇一句」 青山不改,绿水长流 ——白居易 目录 一、…

新手快速搭建springboot项目

一、创建项目 1.1、创建项目 1.2、配置编码 1.3、取消无用提示 1.4、取消无用参数提示 二、添加POM父依赖 <!-- 两种方式添加父依赖或者import方式 --> <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-p…

微信小程序触底加载scroll-view

微信小程序触底加载 scroll-view 了解什么是触底加载&#xff1f; 需求&#xff1a;有个固定高度的容器&#xff0c;实现容器里面的内容触底加载 1、内容盒子的高度 2、盒子里内容的总高度 3、滚动条的scrollTop 触底加载的原理就是 当里面的容器触底的时候进行分页&#xff0…

Ansible-playbook-roles安装lnmp

使用roles安装lnmp 1、准备四台主机 192.168.142.10 192.168.142.20 192.168.142.30 192.168.142.40 2、10作为ansible管理端 首先ssh连接剩下三台主机 3、vim/etc/ansible/hosts 添加[nginxservers]配置nginx ip,[phpservers]php ip,[mysqlservers]mysql ip 4、cd /etc/ansibl…

0基础学习VR全景平台篇第42篇:编辑器底部菜单-分组管理

大家好&#xff0c;欢迎观看蛙色VR官方系列——后台使用课程&#xff01; 本期为大家带来蛙色VR平台&#xff0c;底部菜单—分组管理功能操作。 功能位置示意 一、本功能将用在哪里&#xff1f; 分组管理&#xff0c;指观看者可点击不同分组&#xff0c;查看不同类型全景内容…

【ROS】ROS+Gazebo强化学习:训练

1、安装ROS1 【ROS】Ubuntu20.04安装ROS1 2、安装Anaconda 【AI】PyTorch入门&#xff08;一&#xff09;&#xff1a;通过Anaconda安装PyTorch 【PyThon】Anaconda常用命令 3、源码下载 使用论文 Goal-Driven Autonomous Exploration Through Deep Reinforcement Learnin…

Springboot整合Camunda工作流引擎实现审批流程实例

环境&#xff1a;Spingboot2.6.14 camunda-spring-boot-starter7.18.0 环境配置 依赖配置 <camunda.version>7.18.0</camunda.version> <dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boo…

Redis-缓存

新增或者更新数据时,创建以后顺便存到redis中去【维护缓存】 获取的时候先从redis缓存中拿数据 如果拿数据的时候为空,则到数据库中拿数据,后再存到redis缓存中去 大量的商品【包括冷门商品】都进行上面的缓存,那么就很耗内存 针对每个数据进行缓存的时候 维护一个过期时间…

计算服务资源调度管理

文章目录 前言总体架构“ULT”和“KLT”抽象“内核”“容器”“虚容器” 内存抽象虚拟存储&#xff08;容器调用&#xff09; 多机器调度 前言 今天复习了一下操作系统&#xff0c;系统过了一下&#xff0c;感觉还有点时间&#xff0c;那么顺便来讨论一下&#xff0c;关于我的…

使用VScode + clangd 阅读 c/c++ 源码环境搭建

使用Vscode clangd 阅读c/c源码 一、需求 在嵌入式软件开发的工作中&#xff0c;我们常常需要分析C/C代码&#xff0c;比如linux kernel 的代码&#xff0c;而公司的代码一般都会存放在服务器中&#xff0c;服务器一般是linux&#xff0c;且无法联网&#xff0c;我们只能通过…

qt creator使用问题

qt creator 多版本安装需要(单独下载qtcreator安装版本)&#xff0c;安装目录默认在Qt目录下&#xff08;qt的sdk也在qt目录下&#xff09; 编译过程中遇到一些很奇怪问题&#xff0c;建议优先重新编译。 issue qtcreator inappropriate for the inferior 构建套件&#x…

我准备蓝桥杯的这一年

我准备蓝桥杯的这一年 文章目录 我准备蓝桥杯的这一年起步和目标确定渐入佳境焦虑疲惫&#xff0c;一天又一天国赛我来力总结 我将我这段 流水账分为四个阶段。谨以此文&#xff0c;祭奠我这一年来的焦虑、白发~ &#xff0c;最终也取得了预期的成绩。不知未来再看此章会作何感…

网络编程重点

1>OIS 7层模型 用户空间&#xff1a;应用层 7>提供各种网络接口 表示层 6>数据表示&#xff0c;加密与压缩 会话层 5>主机之间会话管理 内核空间&#xff1a;传输层 4&…

【Java基础学习打卡05】命令提示符

目录 前言一、命令提示符是什么二、命令提示符常用命令1.打开命令提示符2.命令演示3.常用命令 总结 前言 知道命令提示符是什么&#xff0c;熟练打开命令提示符&#xff0c;熟练使用常用命令&#xff0c;并自行尝试其他命令。本文只是对命令提示符进行简单介绍和使用。 一、命…