<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Container on My Blog</title><link>/tags/container/</link><description>Recent content in Container on My Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 01 Jan 2021 00:00:00 +0000</lastBuildDate><atom:link href="/tags/container/index.xml" rel="self" type="application/rss+xml"/><item><title>容器核心技术</title><link>/2021/01/01/%E5%AE%B9%E5%99%A8%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF/</link><pubDate>Fri, 01 Jan 2021 00:00:00 +0000</pubDate><guid>/2021/01/01/%E5%AE%B9%E5%99%A8%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF/</guid><description>&lt;!-- toc --&gt;
&lt;p&gt;[TOC]&lt;/p&gt;
&lt;h1 id="1容器的重要特征"&gt;1.容器的重要特征&lt;/h1&gt;
&lt;p&gt;随着互联网和软件技术的发展，容器技术越来越为大家所熟知和使用，那么容器技术到底好在哪里呢？ 主要是他有如下四个&lt;strong&gt;重要特征&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;隔离性：基于Linux kernel提供的 namespace资源隔离方案。&lt;/p&gt;
&lt;p&gt;安全性：资源隔离，资源访问自然受到了严格的限制，因此同时也把安全问题解决了&lt;/p&gt;
&lt;p&gt;便捷性：相对于虚拟机技术，容器技术启动速度非常快&lt;/p&gt;
&lt;p&gt;可配额：基于Linux 的Cgroups 即：Control Groups，可以对一个或一组资源控制和监控&lt;/p&gt;
&lt;h2 id="docker优势"&gt;docker优势&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;资源利用率高&lt;/li&gt;
&lt;li&gt;启动快&lt;/li&gt;
&lt;li&gt;运行环境一致
&lt;ul&gt;
&lt;li&gt;便于持续交付和部署&lt;/li&gt;
&lt;li&gt;便于迁移&lt;/li&gt;
&lt;li&gt;便于维护和扩展&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;​&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="docker劣势"&gt;docker劣势&lt;/h3&gt;
&lt;h1 id="2-linux-namespace"&gt;2 Linux namespace&lt;/h1&gt;
&lt;p&gt;Linux Namespace是Linux提供的一种内核级别环境隔离的方法。提供了对UTS、IPC、mount、PID、network、User等的隔离机制。&lt;/p&gt;
&lt;p&gt;&lt;img alt="linux_namespace" loading="lazy" src="/2021/01/01/%E5%AE%B9%E5%99%A8%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF/linux_namespace.png"&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;分类&lt;/th&gt;
&lt;th&gt;系统调用参数&lt;/th&gt;
&lt;th&gt;相关内核版本&lt;/th&gt;
&lt;th&gt;隔离内容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mount namespaces&lt;/td&gt;
&lt;td&gt;CLONE_NEWNS&lt;/td&gt;
&lt;td&gt;Linux 2.4.19&lt;/td&gt;
&lt;td&gt;挂载点（文件系统）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UTS namespaces&lt;/td&gt;
&lt;td&gt;CLONE_NEWUTS&lt;/td&gt;
&lt;td&gt;Linux 2.6.19&lt;/td&gt;
&lt;td&gt;主机名与域名,影响uname(hostname, domainname)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IPC namespaces&lt;/td&gt;
&lt;td&gt;CLONE_NEWIPC&lt;/td&gt;
&lt;td&gt;Linux 2.6.19&lt;/td&gt;
&lt;td&gt;信号量、消息队列和共享内存, inter-process communication，有全局id&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PID namespaces&lt;/td&gt;
&lt;td&gt;CLONE_NEWPID&lt;/td&gt;
&lt;td&gt;Linux 2.6.24&lt;/td&gt;
&lt;td&gt;进程编号&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network namespaces&lt;/td&gt;
&lt;td&gt;CLONE_NEWNET&lt;/td&gt;
&lt;td&gt;Linux 2.6.29&lt;/td&gt;
&lt;td&gt;网络设备、网络栈、端口等等&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User namespaces&lt;/td&gt;
&lt;td&gt;CLONE_NEWUSER&lt;/td&gt;
&lt;td&gt;Linux 3.8&lt;/td&gt;
&lt;td&gt;用户和用户组&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="三个系统调用"&gt;三个系统调用&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;调用&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;clone()&lt;/td&gt;
&lt;td&gt;实现线程的系统调用，用来创建一个新的进程，并可以通过设计上述参数达到隔离。 创建时传入 flags参数，可选值有 CLONE_NEWIPC, CLONE_NEWNET, CLONE_NEWNS, CLONE_NEWPID, CLONE_NEWUTS, CLONE_NEWUSER， 分别对应上面六种namespace。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;unshare()&lt;/td&gt;
&lt;td&gt;使某进程脱离某个namespace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;setns()&lt;/td&gt;
&lt;td&gt;把某进程加入到某个namespace&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;常用操作&lt;/p&gt;</description></item></channel></rss>