栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

容器的介绍

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

容器的介绍

容器

文章目录
  • 容器
    • docker的基本概念
    • 容器是如何工作的
      • CGroup的功能
    • LXC常用操作

docker的基本概念

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

docker_logo.jpg

Docker的核心思想就是来自集装箱;集装箱的概念是隔离货物,所以docker的核心就是隔离机制。同时docker使用可移植镜像所以部署以及运维极其方便快捷。

容器是如何工作的

容器通过四个主要组件工作: 名称空间(namespaces) , 控制组(cgroups), 映像(images)和用户空间工具,如LXC或docker

每个容器都是从镜像建立的,镜像告诉Docker容器内包含了什么,当容器启动时运行什么程序,还有许多配置数据。Docker镜像是只读的,当Docker运行一个从镜像建立的容器,它会在镜像顶部添加一个可读写的层,应用程序可以在这里运行。

CGroup的功能

cgroups(Control Groups)最初叫 Process Container,由 Google 工程师(Paul Menage 和 Rohit Seth)于 2006 年提出,后来因为 Container 有多重含义容易引起误解,就在 2007 年更名为 Control Groups,并被整合进 Linux 内核。顾名思义就是把进程放到一个组里面统一加以控制。

cgroups是Control Groups的缩写,它是Linux 内核的一个特征,在2.6.24被引入,Cgroups用于提供对Linux的进程组进行资源上的限制/统计/隔离等操作的这样一种功能。

cgroups 是 Linux 内核提供的一种机制,这种机制可以根据特定的行为,把一系列系统任务及其子任务整合(或分隔)到按资源划分等级的不同组内,从而为系统资源管理提供一个统一的框架。

过去有一段时间,内核开发者甚至把 namespace 也作为一个 cgroups 的 subsystem 加入进来,也就是说 cgroups 曾经甚至还包含了资源隔离的能力。但是资源隔离会给 cgroups 带来许多问题,如 PID 在循环出现的时候 cgroup 却出现了命名冲突、cgroup 创建后进入新的 namespace 导致脱离了控制等等。所以在 2011 年就被移除了。

cgroups能够限制的资源有:

  • blkio:块设备IO
  • cpu:CPU
  • cpuacct:CPU资源使用报告
  • cpuset:多处理器平台上的CPU集合
  • devices:设备访问
  • freezer:挂起或恢复任务
  • memory:内存用量及报告
  • perf_event:对cgroup中的任务进行统一性能测试
  • net_cls:cgroup中的任务创建的数据报文的类别标识符
LXC常用操作

LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求

LXC虽然极大的简化了容器技术的使用,但比起直接通过内核调用来使用容器技术,其复杂程度其实并没有多大降低。后来就出现了docker,所以从一定程度上来说,docker就是LXC的增强版

# 安装lxc
[root@localhost ~]# dnf -y install lxc
[root@localhost ~]# ifconfig virbr0
virbr0: flags=4163  mtu 1500
        inet 192.168.10.102  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::20c:29ff:fe39:9951  prefixlen 64  scopeid 0x20
        ether 00:0c:29:39:99:51  txqueuelen 1000  (Ethernet)
        RX packets 190  bytes 14659 (14.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 145  bytes 20284 (19.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lxc 安装后 在 /usr/share/lxc/templates 为我们提供了几个容器安装的模板:

  • lxc-download:通过网络获取容器镜像来创建容器。
  • lxc-local:通过本地已有的镜像来创建容器。
  • lxc-busybox:使用 busybox 来创建最基本的容器。
  • lxc-oci:通过 oci 标准的镜像来创建容器。
[root@localhost ~]# ls -alh /usr/share/lxc/templates/
total 52K
drwxr-xr-x 2 root root   77 Apr 22 15:04 .
drwxr-xr-x 6 root root  106 Apr 22 14:47 ..
-rwxr-xr-x 1 root root 9.1K Dec 15  2019 lxc-busybox
-rwxr-xr-x 1 root root  18K Dec 15  2019 lxc-download
-rwxr-xr-x 1 root root 7.1K Dec 15  2019 lxc-local
-rwxr-xr-x 1 root root  11K Dec 15  2019 lxc-oci
# 判断linux内核是否支持LXC
[root@localhost ~]# lxc-checkconfig
# 创建容器,-t指定模块,-n名称
[root@localhost ~]# lxc-create -t lxc-busybox -n test1
# 查看有哪些容器
[root@localhost ~]# ls /var/lib/lxc
test1
# 启动容器
[root@localhost ~]# lxc-start test1
# 关闭容器
[root@localhost ~]# lxc-stop
# 销毁容器
[root@localhost ~]# lxc-destroy

]# lxc-start test1

```bash
# 关闭容器
[root@localhost ~]# lxc-stop
# 销毁容器
[root@localhost ~]# lxc-destroy
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/830206.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号