Linux容器内核技术有哪些,Docker容器相关技术简介(Docker依赖于linux内核的两个重要特性)...

了解这两个特性能够更好的理解docker的资源分配和管理

1、NameSapces 命名空间

很多编程语言都包含了命名空间的概念,我们可以认为命名空间是一种封装,封装本身实际上实现了代码的隔离,

在操作系统中命名空间命名空间提供的是系统资源的隔离,其中系统资源包括了:进程、网络、文件系统......

实际上linux系统实现命名空间主要目的之一就是为了实现轻量级虚拟化服务,也就是我们说的容器,在同一个命名空间下的进程可以感知彼此的变化,而对其他命名空间的进程一无所知,这样就可以让容器中的进程产生一个错觉,仿佛他自己置身于一个独立的系统环境当中,以此达到独立和隔离的目的。

2、Docker命名空间的种类:

PID(ProcessID):进程隔离

NET(Network):管理网络接口

IPC(InterProcess Communication):管理跨进程通信的访问

MNT(Mount):管理挂在点(文件系统相关的隔离)

UTS(Unix Timesharing System):隔离内核和版本标识

这些隔离是怎么管理起来的呢?那么就需要用到Control groups控制组

3、Control groups(cgroups) 控制组

一种linux内核提供的一种可以限制、记录、隔离进程组所使用的理资源的机制。为容器而生,没有cgroups就没有今天的容器技术。

资源限制:如外面的子系统可以进程组设置一个内存使用的上限,一旦进程组使用的内存达到了限额,那他再申请内存就会发出内存用完的消息

优先级设定:他可以设定哪些进程组使用更大的cup,或者是磁盘IO的资源

资源计量:他可以计算出进程组使用了多少资源

资源控制:他可以将进程组挂起和恢复

带给docker的能力:

文件系统的隔离:每个容器都有自己的root文件系统

进程的隔离:每个容器都运行在自己的进程环境中

网络隔离:容器间的虚拟网络接口和IP地址都是分开的

资源的隔离和分组:使用cgroups将CPU和内存之类的资源独立分配给每个Docker容器。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要安装 Docker,需要在 Linux 内核中开启以下配置: 1. 需要开启 cgroup 控制组支持,包括 cgroup v1 和 cgroup v2,开启方式如下: ``` CONFIG_CGROUPS=y CONFIG_CGROUP_CPUACCT=y CONFIG_CGROUP_DEVICE=y CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_SCHED=y CONFIG_CGROUP_PERF=y CONFIG_CGROUP_HUGETLB=y CONFIG_CGROUP_NET_CLS=y CONFIG_CGROUP_NET_PRIO=y CONFIG_CGROUP_NET_CLASSID=y CONFIG_CGROUP_BLKIO=y CONFIG_CGROUP_RDMA=y CONFIG_CGROUP_PIDS=y CONFIG_CGROUP_SOCKOPT=y CONFIG_CGROUP_DEBUG=y ``` 2. 需要开启 Namespace 支持,包括 Mount Namespace、UTS Namespace、IPC Namespace、PID Namespace 和 Network Namespace,开启方式如下: ``` CONFIG_NAMESPACES=y CONFIG_UTS_NS=y CONFIG_IPC_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y ``` 3. 需要开启 OverlayFS 文件系统支持,开启方式如下: ``` CONFIG_OVERLAY_FS=y ``` 4. 需要开启 iptables 软件包过滤支持,开启方式如下: ``` CONFIG_NETFILTER_XT_MATCH_COMMENT=y CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y CONFIG_NETFILTER_XT_MATCH_DCCP=y CONFIG_NETFILTER_XT_MATCH_ESP=y CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y CONFIG_NETFILTER_XT_MATCH_HELPER=y CONFIG_NETFILTER_XT_MATCH_IPRANGE=y CONFIG_NETFILTER_XT_MATCH_L2TP=y CONFIG_NETFILTER_XT_MATCH_LENGTH=y CONFIG_NETFILTER_XT_MATCH_LIMIT=y CONFIG_NETFILTER_XT_MATCH_MAC=y CONFIG_NETFILTER_XT_MATCH_MARK=y CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y CONFIG_NETFILTER_XT_MATCH_NFACCT=y CONFIG_NETFILTER_XT_MATCH_OSF=y CONFIG_NETFILTER_XT_MATCH_OWNER=y CONFIG_NETFILTER_XT_MATCH_POLICY=y CONFIG_NETFILTER_XT_MATCH_PROTO=y CONFIG_NETFILTER_XT_MATCH_RATEEST=y CONFIG_NETFILTER_XT_MATCH_RECENT=y CONFIG_NETFILTER_XT_MATCH_SCTP=y CONFIG_NETFILTER_XT_MATCH_STATE=y CONFIG_NETFILTER_XT_MATCH_STATISTIC=y CONFIG_NETFILTER_XT_MATCH_STRING=y CONFIG_NETFILTER_XT_MATCH_TCPMSS=y CONFIG_NETFILTER_XT_MATCH_TIME=y CONFIG_NETFILTER_XT_MATCH_U32=y CONFIG_NETFILTER_XT_TARGET_AUDIT=y CONFIG_NETFILTER_XT_TARGET_CHECKSUM=y CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y CONFIG_NETFILTER_XT_TARGET_CONNMARK=y CONFIG_NETFILTER_XT_TARGET_CPU=y CONFIG_NETFILTER_XT_TARGET_DSCP=y CONFIG_NETFILTER_XT_TARGET_HL=y CONFIG_NETFILTER_XT_TARGET_HMARK=y CONFIG_NETFILTER_XT_TARGET_IDLETIMER=y CONFIG_NETFILTER_XT_TARGET_LED=y CONFIG_NETFILTER_XT_TARGET_LOG=y CONFIG_NETFILTER_XT_TARGET_MARK=y CONFIG_NETFILTER_XT_NAT=y CONFIG_NETFILTER_XT_TARGET_NETMAP=y CONFIG_NETFILTER_XT_TARGET_NFLOG=y CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y CONFIG_NETFILTER_XT_TARGET_NOTRACK=y CONFIG_NETFILTER_XT_TARGET_RATEEST=y CONFIG_NETFILTER_XT_TARGET_REDIRECT=y CONFIG_NETFILTER_XT_TARGET_TEE=y CONFIG_NETFILTER_XT_TARGET_TPROXY=y CONFIG_NETFILTER_XT_TARGET_TRACE=y ``` 请注意,这些配置项可能随着不同版本的内核而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值