登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP网盘
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
苹果容器Apple container是做什么用的?
苹果容器Apple container是做什么用的?
[ 复制链接 ]
滥眩
2025-8-12 02:12:50
一、Apple container是什么
container是苹果公司出的一款容器工具。以轻量级虚拟机方式创建、运行Linux容器。那么,Linux容器又是什么呢?
Linux容器是一种特殊的进程
进程是运行中的程序,而Linux容器是进程中的一种,那Linux容器的特殊是这个进程由命名空间和cgroups来创造出来了一个“边界”。
程序、进程又是什么
程序是指令和数据的集合。进程是运行中的程序,而程序在不运行时都是安安静静地存放在磁盘中的。
容器与虚拟机的对比图
相信大家可能在介绍容器的文章中已经见过下面这个图:
这个图,让我们对容器的理解停留在软件层面上,容器比虚拟机要轻量。然后就止步,不能深入理解了。
虚拟机与容器到底有什么区别
以运行在Ubuntu 20.04的Linux为例来深入理解虚拟机与容器的区别。
先看看在虚拟机上启动Ubuntu 20.04都做了什么:
用宿主机的虚拟化软件启动虚拟机。之后所有处理都在虚拟机上进行的。
启动GRUB等引导程序。
引导程序启动内核。
内核启动init程序。
init进程(一般就是systemd)启动各种服务。
再来看在容器上启动Ubuntu 20.04。是怎样启动的,也就两步:
有一个叫容器运行时的进程,要它创建容器
启动第1号进程
没了。启动速度上,容器没有虚拟机步骤1到3;访问硬件速度上,也不需要像虚拟机需要把控制权交给物理机那样操作。
虚拟机启动时间要十几秒,容器启动时间在1秒内。差距太大了!这就是两者的真正区别。
命名空间
内核的命名空间(namespace)机制是用于实现容器。也就是说,容器是通过利用命名空间机制来实现的。
实际上,容器利用独立的命名空间,将一个个进程从其他进程的运行环境中分离出来,就创建了一个独立的运行环境。每个容器就有自己独立的pid ns、user ns、mount ns。
Cgroups
看容器启动Ubuntu 20.04的步骤2中,容器内的第1号进程只不过是PID namespace让我们见到的情形,可以说是个干扰我们的“障眼法”。实际上宿主机它作为第100号进程与其他进程之间也都是平等竞争关系的。也就是说,第100号进程可能被其他进程占用CPU、内存资源,也可能它把所有资源都吃光。这系统资源被进程抢来抢去的情况。一个命名空间机制是没法限制的,命名空间机制是“隔离”,而cgroups就是“限制”。
cgroup用于限制进程的系统资源(如CPU、内存)分配使用的上限。cgroup(全称:Linux control group)以进程的分组(group)为单位对各种资源进行控制(control),这样限制的。
Docker实例
对于Docker容器,在执行docker run命令的参数指定分配给容器的资源:
docker run -it --cpu-period=100000 --cpu-quota=20000 ubuntu /bin/bash
然后,查看cgroups文件系统下的CPU子系统中“docker”这个控制组里面的资源限制文件内容:
cat /sys/fs/cgroup/cpu/docker/5d5c9f67d/cpu.cfs_period_us
100000
cat /sys/fs/cgroup/cpu/docker/5d5c9f67d/cpu.cfs_quota_us
20000
复制代码
这意味着Docker容器分配给CPU只能使用20%的带宽。
因此,实际上在Docker的底层利用了内核的cgroup。
二、container的安装和启动
从github发布页面下载container-0.3.0-installer-signed.pkg
安装完成后,在iTerm终端用命令启动服务:
container system start
下载Linux镜像并运行
我下载的是Ubuntu 20.04镜像:
container pull ubuntu:20.04
这是从Docker hub上拉取的官方镜像。
后台运行容器:
container run -d --name my-ubuntu ubuntu:20.04 tail -f /dev/null
进入容器终端:
container exec -it my-ubuntu /bin/bash
这样,就可以在容器内进行操作了。
三、了解就这么多,足够了
苹果的container与现有的Docker容器方案不一样,可以在每个容器运行自己轻量级虚拟机。这款容器工具只能在Mac芯片上运行,使用场景有些小众了。虽然足够安全,性能上也很强。但毕竟是6月10号才出来的,现在才0.3版。
大家有Mac芯片电脑的可以用来跑个Linux。而不用花个大几万去云上虚拟机跑Linux了。
感谢大家的阅读我豆爸写的文章,我们下一篇文章再见。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
科技
安全
签约作者
程序园优秀签约作者
发帖
滥眩
2025-8-12 02:12:50
关注
0
粉丝关注
15
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
黎瑞芝
9990
杭环
9988
4
猷咎
9988
5
凶契帽
9988
6
接快背
9988
7
氛疵
9988
8
恐肩
9986
9
虽裘侪
9986
10
里豳朝
9986
查看更多