容器和LXC简单命令
容器和LXC简单命令
文章目录
- 容器和LXC简单命令
- 一.CGroup(控制组)的功能
- 1. cgroup(容器控制组)
- 1.1 功能:
- 1.2 具体功能:
- 1.3 控制组可以限制的资源有
- 二.docker基本概念
- 三.docker工作方式
- 四.容器的编排
- 五. lxc命令用法
- 1.1 下载lxc的epel源,并安装lxc软件包和依赖包
- 1.2 添加网桥
- 2.启动lxc
- 3. 用于判断linux内核是否支持LXC
- 4. 列出容器模板
- 5. 创建lxc主机
- 6. 命令
一.CGroup(控制组)的功能
1. cgroup(容器控制组)
Container(容器)分离的资源和隔离内容有
- UTS:(主机名与域名)
- Mount(文件系统挂载树):文件系统挂载点
- IPC:共享内存
- PID进程树,进程编号
- User:用户和用户组
- Network(tcp/ip协议栈):网络设备,IP地址,端口
每个容器都可以拥有自己独立的命名空间,运行其中的应用都像是在独立的操作系统中运行一样。命名空间保证了容器间彼此互不影响
命名空间由CGroup创建的
1.1 功能:
- 用来对共享资源进行隔离,限制和审计,控制组可以对容器的内存,CPU和磁盘io等资源进行限制
1.2 具体功能:
- 资源限制组:可以对资源所使用的内存进行限制,超出会发出警告OOM(内存溢出)
- 优先级:让一些组优先得到更多的CPU等资源
- 资源审计:用来统计系统实际上把多少资源用到合适的目的上,可以使用cpuacct子系统记录某个进程组使用的CPU时间
- 隔离:为控制组隔离命名空间(
Namespaces命名空间
),这样一个组不会看到另一个组的进程、网络连接和文件系统 - 控制:挂起(暂停),恢复,重启
1.3 控制组可以限制的资源有
- blkio:块设备,硬盘
- CPU
- cpuacct:CPU资源使用报告
- cpuset:CPU核心
- devices:设备访问
- freezer:挂起或恢复任务
- memory:内存用量
- perf_event:对控制组中的任务进行统一性能测试
- net_cls:cgroup中的任务创建的数据报文的类别标识符
1.安装Docker后,用户可以在/sys/fs/cgroup/memory/docker/
目录下看到对Docker组应用的各种限制项,用户可以通过修改这些文件值来控制组限制Docker应用资源
[root@SYL4 ~]# ls /sys/fs/cgroup/memory/
cgroup.clone_children memory.memsw.failcnt
cgroup.event_control memory.memsw.limit_in_bytes
cgroup.procs memory.memsw.max_usage_in_bytes
cgroup.sane_behavior memory.memsw.usage_in_bytes
init.scope memory.move_charge_at_immigrate
machine.slice memory.numa_stat
memory.failcnt memory.oom_control
memory.force_empty memory.pressure_level
memory.kmem.failcnt memory.soft_limit_in_bytes
memory.kmem.limit_in_bytes memory.stat
memory.kmem.max_usage_in_bytes memory.swappiness
memory.kmem.slabinfo memory.usage_in_bytes
memory.kmem.tcp.failcnt memory.use_hierarchy
memory.kmem.tcp.limit_in_bytes notify_on_release
memory.kmem.tcp.max_usage_in_bytes release_agent
memory.kmem.tcp.usage_in_bytes system.slice
memory.kmem.usage_in_bytes tasks
memory.limit_in_bytes user.slice
memory.max_usage_in_bytes
[root@SYL4 ~]#
二.docker基本概念
docker是容器技术的前端工具,是用来管理容器的工具,它将容器得以简化
LXC进行大规模创建容器很难,想在另一台主机上复刻一个一模一样的容器也很难,所以docker早期的版本其核心就是一个LXC,docker对其进行了二次封装,功能的实现是通过LXC做容器管理引擎
创建容器时,将系统空间所使用的组件事先准备好,编排好,将其打包成一个镜像文件,然后将镜像文件拷贝到目标主机直接部署启动。
docker的镜像文件放在一个集中统一的互联网仓库中的称之为镜像仓库
docker的核心技术主要包括Linux操作系统的命名空间、控制组、联合文件系统和Linux虚拟网络支持。
联合文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加。
三.docker工作方式
docker采取一个用户空间只跑一个业务进程的方式,在一个容器内只运行一个进程(一个容器跑一个进程或业务)
LXC是把一个容器当一个用户空间使用,当虚拟机一样使用,里面可以运行N个进程,这就使得我们在容器内去管理时极为不便,而docker用这种限制性的方式,在一个容器中只运行一个进程的方式,使得容器的管理更加方便。
docker的优劣势:
- 删除一个容器不会影响其他容器
- 调试不便,占空间(每个容器中都必须自带调试工具,ps命令)
- 分发容易,真正意义上一次编写(写的镜像可以到处运行)到处运行,比java的跨平台更彻底,装的docker,可以直接部署
- 部署容易,无论底层系统是什么,只要有docker,直接run就可以了
- 分层构建,联合挂载(真机上的资源跟容器所绑定)
base基础镜像,是开源的
在容器中有数据称作有状态,没有数据称作无状态。在容器的使用中,我们应以有状态为耻,以无状态为荣。数据不应该放在容器中,而应放置于外部存储中,通过挂载到容器中从而进行数据的存储。
四.容器的编排
构建一个lnmp架构的时候,它们之间会有依赖关系,哪个应用应该在什么时候启动,在谁之前或之后启动,这种依赖关系我们应该要事先定义好,最好是按照一定的次序实现,而docker自身没有这个功能,所以我们需要一个在docker的基础上,能够把这种应用程序之间的依赖关系、从属关系、隶属关系等等反映在启动、关闭时的次序和管理逻辑中,这种功能被称为容器编排。
有了docker以后,运维的发布工作必须通过编排工具来实现容器的编排
常见的容器编排工具:
- machine+swarm(把N个docker主机当一个主机来管理)+compose(单机编排)
- mesos(实现统一资源调度和分配)+marathon
- kubernetes --> k8s
五. lxc命令用法
1.Linux容器,一种操作系统层虚拟化技术,为Linux内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器,内含应用软件本身的代码,以及所需要的操作系统核心和库。透过统一的名字空间和共享API来分配不同软件容器的可用硬件资源,创造出应用程序的独立沙箱运行环境,使得Linux用户可以容易的创建和管理系统或应用容器。
2.在Linux内核中,提供了cgroups功能,来达成资源的隔离。它同时也提供了名称空间隔离的功能,使应用程序看到的操作系统环境被区隔成独立区间,包括进程树,网络,用户id,以及挂载的文件系统。但是cgroups并不一定需要启动任何虚拟机。
3.LXC利用cgroups与名称空间的功能,提供应用软件一个独立的操作系统环境。LXC不需要Hypervisor这个软件层,软件容器本身极为轻量化,提升了创建虚拟机的速度
4.Docker本质来说不是容器,而是容器的管理工具,最初的Docker也是基于LXC实现的。
1.1 下载lxc的epel源,并安装lxc软件包和依赖包
[root@SYL4 ~]# yum -y install epel-release
[root@SYL4 ~]# yum -y install lxc lxc-templates bridge-utils lxc-libs libcgroup libvirt
lxc #主程序包
lxc-templates #lxc的配置模板
bridge-utils #网桥管理工具
lxc-libs #lxc所需的库文件
libcgroup #cgroup是为Linux内核提供任务聚集和划分的机制,通过一组参数集合将一些任务组织成一个或多个子系统。
libvirt #管理Linux的虚拟化功能所需的服务器端守护程序。 需要针对特定驱动程序的管理程序。
1.2 添加网桥
brctl addbr virbr0 #添加网桥
brctl addif virbr0 ens160 ; # 将网桥关联到ens160这个网卡 \
ip addr del dev ens160 192.168.232.132/24 ; #把网卡上的ip删了 \
ifconfig virbr0 192.168.232.132/32 up #给网桥配置ip \
ip addr add 192.168.232.132/32 dev virbr0
ip link set virbr0 ip
route add default gw 192.168.232.2 #设置默认网关
2.启动lxc
[root@SYL4 ~]# systemctl start lxc//启动服务
[root@SYL4 ~]# systemctl status lxc//查看状态
● lxc.service - LXC Container Initialization and Autoboot CodeLoaded: loaded (/usr/lib/systemd/system/lxc.service; disabled; v>Active: active (exited) since Sat 2022-04-23 17:49:23 CST; 1s agoDocs: man:lxc-autostartman:lxcProcess: 51796 ExecStart=/usr/libexec/lxc/lxc-containers start (c>Process: 51794 ExecStartPre=/usr/libexec/lxc/lxc-apparmor-load (c>Main PID: 51796 (code=exited, status=0/SUCCESS)Apr 23 17:49:23 SYL4 systemd[1]: Starting LXC Container Initializat>
Apr 23 17:49:23 SYL4 systemd[1]: Started LXC Container Initializati>
[root@SYL4 ~]#
[root@SYL4 ~]# systemctl start libvirtd//启动虚拟网络
[root@SYL4 ~]#
3. 用于判断linux内核是否支持LXC
[root@SYL4 ~]# lxc-checkconfig
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-4.18.0-348.el8.x86_64
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Warning: newuidmap is not setuid-root
Warning: newgidmap is not setuid-root
Network namespace: enabled--- Control groups ---
Cgroups: enabledCgroup v1 mount points:
/sys/fs/cgroup/systemd
/sys/fs/cgroup/freezer
/sys/fs/cgroup/perf_event
/sys/fs/cgroup/memory
/sys/fs/cgroup/pids
/sys/fs/cgroup/cpu,cpuacct
/sys/fs/cgroup/rdma
/sys/fs/cgroup/cpuset
/sys/fs/cgroup/net_cls,net_prio
/sys/fs/cgroup/blkio
/sys/fs/cgroup/devices
/sys/fs/cgroup/hugetlbCgroup v2 mount points: Cgroup v1 clone_children flag: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled--- Misc ---
Veth pair device: enabled, not loaded
Macvlan: enabled, not loaded
Vlan: enabled, not loaded
Bridges: enabled, not loaded
Advanced netfilter: enabled, not loaded
CONFIG_NF_NAT_IPV4: missing
CONFIG_NF_NAT_IPV6: missing
CONFIG_IP_NF_TARGET_MASQUERADE: enabled, not loaded
CONFIG_IP6_NF_TARGET_MASQUERADE: enabled, not loaded
CONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled, not loaded
CONFIG_NETFILTER_XT_MATCH_COMMENT: enabled, not loaded
FUSE (for use with lxcfs): enabled, loaded--- Checkpoint/Restore ---
checkpoint restore: enabled
CONFIG_FHANDLE: enabled
CONFIG_EVENTFD: enabled
CONFIG_EPOLL: enabled
CONFIG_UNIX_DIAG: enabled
CONFIG_INET_DIAG: enabled
CONFIG_PACKET_DIAG: enabled
CONFIG_NETLINK_DIAG: enabled
File capabilities: Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig[root@SYL4 ~]#
4. 列出容器模板
[root@SYL4 ~]# ls /usr/share/lxc/templates/
lxc-busybox lxc-download lxc-local lxc-oci
[root@SYL4 ~]#
5. 创建lxc主机
[root@SYL4 ~]# ls /usr/share/lxc/templates/
lxc-busybox lxc-download lxc-local lxc-oci
[root@SYL4 ~]# lxc-create --name=mushuang -t /usr/share/lxc/templates/lxc-busybox
/usr/bin/which: no busybox in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
ERROR: Please pass a pathname for busybox binary
lxc-create: mushuang: lxccontainer.c: create_run_template: 1625 Failed to create container from template
lxc-create: mushuang: tools/lxc_create.c: main: 331 Failed to create container mushuang
用法: lxc-create {-n name} [-f config_file] {-t template} [-B backingstore] [-- template-options]
- 选项
-n,--name #容器的主机名
-f,--config #指定配置文件以配置容器的虚拟化和隔离功能
-t template #调用模板脚本,可执行模板脚本的完整路径也可以作为参数传递。 “none”可用于强制lxc-create跳过rootfs创建。
-B backingstore #指定根文件储存路径的文件系统,可选:dir、lvm、loop、btrfs、zfs、best ,默认为dir,如果是dir可以使用--dir指定lxc主机的根在宿主机的存储路径。
-P, --lxcpath #自定义容器路径。默认值为/var/lib/lxc。
-o, --logfile #输出创建过程到一个日志文件中。
-l, --logpriority #将日志优先级设置为LEVEL,默认优先级为ERROR
-- #向template传递参数查看可选参数:lxc-create -t TEMPLATE -h,常用参数如下-n,--name #容器标识符-p,--path #指定容器根的创建路径,默认/var/lib/lxc/容器名/-c,--clean #清除缓存-R,--release #指定Centos的发行版本--fqdn #用于DNS和系统命名的完全域名(FQDN)--repo #指定创建容器是使用的yum源,这个是redhat系统的参数-a,--arch #指定容器的架构,可选i686,x86_64
6. 命令
lxc-checkconfig
检查系统环境是否满足容器使用要求;lxc-create
创建lxc容器;
格式:lxc-create -n NAME -t TEMPLATE_NAMElxc-start
启动容器;
格式:lxc-start -n NAME -dlxc-info
查看容器相关的信息;
格式:lxc-info -n NAMElxc-console
附加至指定容器的控制台;
格式:lxc-console -n NAME -t NUMBERlxc-stop
停止容器;lxc-destory
删除处于停机状态的容器;lxc-snapshot
创建和恢复快照;退出容器方式:<Ctrl+a q>
容器和LXC简单命令相关推荐
- dockers容器基础及基础命令(一)
目录 前言 一.KVM虚拟化的简单概论 1.虚拟化 2.虚拟化类型 3.虚拟化特性 4.KVM简介 二.docker容器简介 1.docker概念 2.Docker和虚拟机的区别 3.Docker的使 ...
- LXC简单介绍与使用
简介 LXC(LinuX Containers)Linux容器,一种操作系统层虚拟化技术,为Linux内核容器功能的一个用户空间接口.它将应用软件系统打包成一个软件容器(Container),内含应用 ...
- Docker新手教程(03)进入已创建的Docker容器并执行bash命令
03.进入已创建的Docker容器并执行bash命令 1.情况描述 我们会遇见这样一种情况,一个Docker容器执行一段时间后,出错了,这个时候我们需要查看到底是因为什么原因出错. 正常情况,我们进入 ...
- IoC容器总结与简单模拟
IoC容器总结与简单模拟 当一个组件需要外部资源时,最直接也最明智的方法是执行查找,这种行为称为主动查找.但这种查找存在一个缺点--组件需要知道如何获得资源.那么它的解决方案是什么呢?请看下文. AD ...
- sola ris 简单命令
Solaris 简单命令 2007-04-14 17:00:56 标签:solaris linux unix 命令 solaris [推送到技术圈] 比较郁闷的是,无法执行rb文件,提示没有权限.想给 ...
- docker 在容器外执行某个容器内的某个命令
有时候我们想执行某个容器的某条命令,但又不想进入容器内.那该怎么办? 于是脚本可以这样写 DOCKER_ID=62f3f40ab240 sudo docker exec -it $DOCKER_ID ...
- 华为ensp常用简单命令(二)
华为ensp常用简单命令(二) 华为ensp 1.CE交换机 2.vlan及三大模式划分端口入vlan 3.网桥优先级 4.RSTP和MSTP 5.查看命令 华为ensp 1.CE交换机 CE交换机把 ...
- 关于file的部分简单命令
1.关于file的简单命令 2.创建/删除 文件/目录 ## -f和-r可以连用,表示强制删除 3.文件/目录的复制 ##复制是一个新建的过程,在保持原有不变的基础上重新再建立一个 4.文件/目录的 ...
- linux学习-简单命令介绍及安装VMware Tools
常用简单命令介绍 ethernet以太网 pts:模拟终端 图形界面: Ctrl+Alt+F1 字符界面:Ctrl+Alt+F2-F6 切换虚拟终端:(本机操作) # chvt 1-6 关闭图形界面, ...
最新文章
- SQL Server 跨数据库事务
- WebGIS中基于AGS的画圆查询简析以及通过Polygon来构造圆的算法
- 洛谷 p2066 机器分配(资源型)
- Kafka JAVA客户端代码示例--高级应用
- 一起用C#做个五子棋的小游戏 增加了程序对战功能
- php webshell开源,[github开源]webshell连接器--Jeshell
- 英国鬼死于狭隘和傲慢,中国鬼死于听天由命和漫不经心--《我的团长我的团》兰晓龙...
- 《C程序设计语言》笔记 (三) 控制流
- 通达OA - 数据备份与恢复指南
- 音视频是怎样实现传输的
- 税控盘查看服务器设置的网站,税控盘服务器地址
- 北京航空航天计算机考研科目,2020考研北京航空航天大学计算机考研考试科目...
- 计算机通信答辩ppt,电子设计大赛答辩.ppt
- 第六章代码的问题——基于DirectX11的3D图形程序设计案例教程——重庆大学出版社
- 角色设计竟然有这些小技巧
- Doctrine 查询语法
- 把模糊MATLAB波形的图变清晰,什么修图软件能把模糊图片清晰化?
- java计算机毕业设计校园环境保护监督系统源程序+mysql+系统+lw文档+远程调试
- OWC生成统计报表(柱形图)
- Java 8新特性(三):Optional类
热门文章
- #185. [NOIP2016 提高组] 蚯蚓题解
- 如何解决eNSP启动AR/WLAN设备失败问题
- 站在营销看工作,偶发几点小心得
- C51数字钟程序-ZT(拿来学习用)
- zabbix配置钉钉报警
- 【全网首发】听阿里云产品架构师罗小飞解读CDN产品最佳实践
- python中如何求水仙花数_python如何求水仙花数?
- DOM深入学习 --- 聚焦:focus / blur ,foucs / blur 委托的实现,tabindex中任何元素都可聚焦(六)
- 1602液晶显示器代码
- SecureCRT快速连接服务器