发布于2025年12月5日12月5日 如果您是Apple 用户,您可能听说过Apple 在WWDC 2025 期间即将推出的功能容器化。 快h2: Container 是一个CLI 工具,与容器化配合使用。这就是最终用户与之交互的内容。容器化处理创建容器,与Virtualization.framework 进行通信。Virtualization.framework 是虚拟机管理程序API(高级),并通过Hypervisor.framework.Hypervisor.framework 为每个容器创建一个新的虚拟机。framework 是低级虚拟机管理程序API,它使用macOS 内核(虚拟机管理程序)。它类似于Microsoft 的Windows Subsystem for Linux 2 (WSL),其中启动了一个非常小的轻量级虚拟机(VM)背景,因此Linux 内核可以在非Linux 主机上使用(WSL2 使用Hyper-V)。不要与WSL1 混淆,它更像是WINE! 它将针对下一个主要操作系统版本macOS“Tahoe”26 以及macOS“Sequoia”15 公开发布。 容器化支持“符合开放容器倡议(OCI)”的容器,幸运的是我们的Kali 镜像就是这样! 设置 如果我们在尝试运行容器时看到的第一件事是: ~ % 容器 zsh: 命令未找到: 容器 ~% mldr;我们需要安装它。 快速检查以确保我们的系统受支持: ~ % sw_vers-产品版本 15.5 ~% ~ % uname -m ARM64 ~% 我们在Apple Silicon 系列设备(又名arm64)上使用macOS 15.5。 我们很高兴出发! 如果安装了Homebrew: 〜%brew安装--木桶容器 ==正在下载https://github.com/apple/container/releases/download/0.2.0/container-0.2.0-installer-signed.pkg ==从https://release-assets.githubusercontent.com/github-product-release-asset/993475914/c5fb6 下载a42-f282-4dd7-95c2-af9b142f0ed1?sp=rsv=2018-11-09sr=bspr=httpsse=2025-07-17T14%3A06%3A32Zr ######################################################################################################################################################################## 100.0% ==安装Cask 容器 ==使用sudo 运行容器安装程序;可能需要密码。 密码: installer: 软件包名称为container-0.2.0-installer-signed installer: 在基本路径/升级 installer: 升级成功。 容器安装成功! ~% 否则,我们可以从github.com/apple/container 手动获取(签名的)安装文件。在编写它的container-0.2.0-installer-signed.pkg时。 现在当我们尝试运行它时: ~ % 容器 OVERVIEW: 适用于macOS 的容器平台 USAGE: 容器[--debug] 子命令 选项: --debug 启用调试输出[environment: CONTAINER_DEBUG] --version 显示版本。 -h, --help 显示帮助信息。 容器子命令: 创建创建一个新容器 delete, rm 删除一个或多个容器 exec 在正在运行的容器中运行新命令 检查显示有关一个或多个容器的信息 kill 杀死一个或多个正在运行的容器 list, ls 列出容器 日志获取容器stdio 或启动日志 run 运行容器 start 启动一个容器 stop 停止一个或多个正在运行的容器 图像子命令: build 从Dockerfile 构建镜像 图像,图像,i 管理图像 registry, r 管理注册表配置 其他子命令: builder 管理镜像构建器实例 system, s 管理系统组件 ~% mldr;但我们还没有完全做到这一点! 当我们使用容器尝试与Containerization交互时,我们可能会得到: ~ % 容器ls Error: Interrupted: 'internalError: '未能列出容器'(cause: 'interrupted: 'XPC 连接错误: 连接无效'') 确保容器系统服务已通过“容器系统启动”启动。 ~% 我们可以通过在后台启动服务来解决这个问题: ~ % 容器系统启动 验证apiserver 正在运行. 正在安装基本容器文件系统. 没有配置默认内核。 从[https://github.com/kata-containers/kata-containers/releases/download/3.17.0/kata-static-3.17.0-arm64.tar.xz] 安装推荐的默认内核? [是/否]: 是 正在安装内核. ~% 现在我们开始比赛了! 运行容器 像Docker 和Podman 一样,我们可以按照预期运行容器: ~ % 容器运行--rm -i -t kalilinux/kali-rolling ┌──(root㉿9ff4685f-76e1-42fa-86ba-f12e76c79843)-[/] └─#id uid=0(root) gid=0(root) groups=0(root) 第一次运行时,容器需要拉取容器镜像。 当前默认的容器注册表是DockerHub(Kali 位于其中)。 我们能够实现与Docker/Podman 相同的功能,如您所期望的,例如共享目录: 〜%容器运行--remove --interactive --tty --volume $(pwd):/mnt --workdir /mnt docker.io/kalilinux/kali-rolling:latest ┌──(root㉿4be77ff5-bd57-4076-8bf0-8e51caff047e)-[/mnt] └─# uname -a Linux 4be77ff5-bd57-4076-8bf0-8e51caff047e 6.12.28 #1 SMP 5 月20 日星期二15:19:05 UTC 2025 aarch64 GNU/Linux 别名 一旦一切按预期工作,我们可以创建一个快速别名,以避免每次重新输入完整命令: 〜%别名container-shell='容器运行--remove --interactive --tty --entrypoint=/bin/bash --volume $(pwd):/mnt --name'$(主机名-s)-$(mktemp -u XXXXXX)'--workdir/mnt' ~% ~ % echo 'alias container-shell='容器运行--remove --interactive --tty --entrypoint=/bin/bash --volume $(pwd):/mnt --name '$(hostname -s)-$(mktemp -u XXXXXX)' --workdir /mnt'' ~/.zshrc ~% ~ % 容器外壳kalilinux/kali-rolling:latest ┌──(root㉿mba22-vB9af6)-[/mnt] └─# 疑难解答 目前容器化存在一些已知的限制,尤其是使用macOS“Sequoia”15,例如容器的网络访问无法获取IP 地址或无法访问网络。如果您遇到这些问题,我们建议您阅读并遵循Apple 的建议。 就像这样,我们有一种在macOS 上运行Kali 容器的快速方法。这是我们“Kali Everywhere”持续承诺的一部分,我们将您需要的工具放在尽可能多的地方,并方便您使用。运行Kali 的方法有很多种,请务必查看我们的Kali 获取页面,找到最适合您需求的方法。
创建帐户或登录后发表意见