linux原理 培训,Linux容器技术原理和使用

1.1 隔离和共享

在一个多员共用的开发环境或者一台服务器运行多个逻辑隔离的服务器进程。谁的运行环境也不希望影响到另一个谁。也就是一个物理机器需要虚拟化出多个环境或者容器。通过提供一种创建和进入容器的方式,操作系统让应用程序就像在独立的机器上运行一样,但又能共享很多底层的资源。

1.2 虚拟化vs容器

传统的虚拟化技术是通过硬件模拟或者操作系统软件实现,而容器技术可以比传统虚拟化更轻量级。

容器在提供隔离的同时,还通过共享这些资源节省开销,这意味着容器比真正的虚拟化的开销要小得多。例如,可以有效地共享公共文件(比如 glibc)的页缓存,因为所有容器都使用相同的内核,而且所有容器还常常共享相同的 libc 库(取决于容器配置)。这种共享常常可以扩展到目录中其他不需要写入内容的文件。

和传统虚拟化相比,容器启动很快,由于共享系统资源,一台主机可以运行上千个容器,并且容器镜像用类似git分发思想,用户更容易创建,分发,更新存储这些镜像。

1.3 前世和今生

今生是docker大流行的时代,而前世就是早于1982年的chroot工具,以及后面经过改进并且现在还在使用的lxc技术。早期的docker的代码实现基于LXC(0.9之前)。

Linux容器功能是基于 cgroups 和 Namespace 来实现的. 所以要了解 Linux 容器必须先了解 cgroup 和 Namespace.

2.1、cgroups(控制组)

cgroups 是将进程分组管理的内核功能.通过cgroups可以隔离进程, 同时还可以控制进程的资源占用(CPU, 内存等等)情况在操作系统底层限制物理资源,起到 Container 的作用。进程可用的cpu资源由cpuset指定。

2.2、Namespace (命名空间)

Namespace让每个进程组有独立的PID, IPC和网络空间.Namespace通过 clone系统调用来实现的.

clone系统调用的第3个参数flags就是通过设置Namespace来划分资源的.

LXC依赖于epel-release的安装,EPEL(Extra Packages for Enterprise Linux)是Fedora 社区打造提供高质量软件包的项目,相当于一个第三方源。

yum install epel-release -y

然后再安装LXC相关的工具包,和创建容器所需要的模板lxc-templates

yum install lxc lxc-templates -y

安装完使用lxc-checkconfig检查下操作系统对容器技术的支持

9f0e197f48ead22a65bbaa00ce09b912.png

3.1 LXC工具包概览

LXC所有的操作工具api都在这里,可以对LXC进行相应的操作。

9f0e197f48ead22a65bbaa00ce09b912.png

LXC所有命令

3.2 创建一个容器

使用预定义的模板创建一个容器。它会根据模板设置自动下载依赖环境包并安装。

lxc-create -n 容器名称 -t 模板(不需要加 lxc)lxc-create -n mariolu-console -t centos

模板就是第3节安装的lxc-templates工具包。所有模板放在这个目录下/usr/share/lxc/templates/

9f0e197f48ead22a65bbaa00ce09b912.png

LXC的所有模板

跟chroot思想一样,安装完容器,所有的主机文件夹根目录被重定义到/var/lib/lxc/mariolu-console

9f0e197f48ead22a65bbaa00ce09b912.png

重新定义的root路径

3.3 启动容器

就像安装完机器后,我们要开机启动服务器。Lxc也有相应的步骤就是

lxc-start -n mariolu-console

9f0e197f48ead22a65bbaa00ce09b912.png

启动界面

但是我们很快就发现,启动需要密码,但是使用容器创建没有输入密码,难道是有什么默认密码吗

9f0e197f48ead22a65bbaa00ce09b912.png

在这里并不能看到root密码,密码或者被用x字符替代,或者是一串hash码。

cat /var/lib/lxc/mariolu-console/rootfs/etc/shadowchroot /var/lib/lxc/mariolu-console/rootfs passwd

网络搜索没找到默认密码,但是找到了这么一句话:

The root password is set up as expired and will require it to be changedat first login, which you should do as soon as possible. If you lose the root password or wish to change it without starting the container, you can change it from the host by running the following command (which will also reset the expired flag)

chroot /var/lib/lxc/sspl-test/rootfs passwd

YES! Give Me Five! 这个告诉我们重置密码的命令。我们新开一个窗口,完成密码的重置,然后重新切换回原来的窗口,这时候就可以用密码愉快的登陆了。

9f0e197f48ead22a65bbaa00ce09b912.png

9f0e197f48ead22a65bbaa00ce09b912.png

登录成功

好啦!今天的分享到这里就结束了,希望大家持续关注马哥教育官网,每天都会有大量优质内容与大家分享!声明:文章转载于网络,版权归原作者所有!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模态框里使IMG的Src能动态显示

<IMG οnclick"var actionMath.random();this.srcvcode.aspx?actionaction.toString();" />点击图片&#xff0c;只要vcode.aspx能动态输出不同的内容&#xff0c;则IMG控件里的图片也会变动&#xff0c;在模态框里也有效

github和gitlab仓库一起使用

github是网络公有代码仓库&#xff0c;一般用于私人代码托管&#xff0c;而gitlab一般是企业搭建的内部代码仓库。工作期间&#xff0c;我们都会同时用到这两个仓库。可公司邮箱与个人邮箱是不同的&#xff0c;由此产生的 SSH key 也是不同的&#xff0c;这就造成了冲突 。如何…

linux端口被攻击,Linux 常见攻击端口封杀表

Linux常见攻击端口封杀表# Vi /etc/sysconfig/iptables# INPUT-A INPUT -p tcp --dport 135 -j REJECT-A INPUT -p udp --dport 135 -j REJECT-A INPUT -p tcp --dport 136 -j REJECT-A INPUT -p udp --dport 136 -j REJECT-A INPUT -p tcp --dport 137 -j REJECT-A INPUT -p u…

Exchange 2007服务器启动后,Information Store和System Attendant服务不能自动启动

Exchange 2007服务器启动后&#xff0c;Information Store和System Attendant服务不能自动启动 SA和Information服务不会自动启动&#xff0c;手动启动正常1) 在Exchange服务器上添加下面的注册表键值来延迟SA的启动时间HKLM\System\CurrentControlSet\Services\MSExchangeSA\P…

报表简介

帆软报表、华企报表、润乾报表系统、杰表 、数巨报表 1.帆软报表&#xff08;FineReport&#xff09;软件下载地址&#xff1a;http://www.finereport.com/products/trial软件介绍FineReport报表软件是帆软软件&#xff08;中国&#xff09;公司自主研发的一款纯Java编写的企业…

巨型帧linux检测,linux – KVM来宾和主机之间的巨型帧?

我正在尝试为KVM来宾和主机系统之间的存储通信实现9000字节MTU.主机有一个桥接器(br1),其MTU为9000字节&#xff1a;host# ip link show br18: br1: mtu 9000 qdisc noqueue state UPlink/ether fe:54:00:50:f3:55 brd ff:ff:ff:ff:ff:ffinet 172.16.64.1/24 brd 172.16.64.255…

访问服务器端数据

有时你要连接的服务并非是SOAP风格的。其他常用的框架可以结合使用HTTP Get和Post方法来返回数据。使用<mx:HTTPService>标签可以让你访问这种类型的WEB服务。使用HTTP Post和Get方法操作的WEB服务可以理解为REST服务。在很多情况下&#xff0c;使用HTTP Post方法。使用H…

《大话设计模式》--模板模式

题目&#xff1a;相同的两份试卷&#xff0c;甲乙两个人做&#xff0c;答案不同 public class TestPager {public void question() {System.out.println("题目&#xff1a;答案是A、B、C、D中哪一个&#xff1f;");System.out.println("答案&#xff1a;" …

linux 股票指南针,IOS开发入门之ios指南针

本文将带你了解IOS开发入门之ios指南针&#xff0c;希望本文对大家学IOS有所帮助参考http://blog.sina.com.cn/s/blog_4a37054201013nhr.html可运行的代码如下1.拖拽ImageView ,关联变量到.h中2.代码如下//// ViewController.h// SouthDemo//// Created by xiao7 on 14/10/2…

一条命令解决系统N多故障

这是我刚在论坛上看到的&#xff0c;所以我把它收藏在我的博客中&#xff0c;因为以前笔记本总遇到这样的问题&#xff0c;不知道能管用吗&#xff0c;待测试。 1&#xff1a; 使用Windows操作系统的人有时会遇到这样的错误信息&#xff1a;「“0X????????”指令引用的…

【Java】二维码生成,QRcode

QRcode jar包下载地址&#xff1a;http://swetake.com/qrcode/java/qr_java.html 解析的工具可以参考 zxing 代码如下 package erweima;import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOExceptio…

linux db2 ssl,IBM DB2 Content Manager V83与手工配置SSL

此文章主要向大家描述的是IBM DB2 Content Manager V83系统中&#xff0c;手工配置SSL的实际操作步骤&#xff0c;在IBM DB2 Content Manager V83系统中&#xff0c;一般的情况下都需要使用SSL协议。 在安装IBM DB2 Content Manager V83系统时。安装程序可以完成对IBM HTTP Ser…

打印机每天都要重新连接

打印机每天都要重新连接 打印机每天都要重新连接 各位大侠请教一个菜鸟问题 LAN中一台电脑连接打印机并共享 但只要作为打印服务器的这台电脑关机或者重启 其他电脑出现打印机无响应 必要要重新连接打印机才能使用 检查打印机服务器如下设置&#xff1a; 工作组共享问题详细解决…

JS字符串与二进制的相互转化

//字符串转ascii码&#xff0c;用charCodeAt(); //ascii码转字符串&#xff0c;用fromCharCode(); var str "A"; var code str.charCodeAt(); var str2 String.fromCharCode(code);十进制转二进制 var a "i"; console.log(a.charCodeAt()); //105 cons…

c语言 ipc 参数 序列化,浅谈IPC通信之序列化与反序列化(三)

由于进行通信肯定要涉及数据的处理&#xff0c;所以我们需要先了解两个基础的概念&#xff0c;序列化和反序列化。定义序列化&#xff1a;将对象转化为可保存的字节序列(注意是对象)&#xff1b;反序列&#xff1a;将字节序列恢复为对象的过程。序列化和反序列的用途&#xff1…