macOS 容器机

2026-06-10 1 阅读 timsneath
容器机 容器机提供高度集成的 Linux 环境,可在您的 Mac 上无缝运行。集装箱机器快速、轻便且持久。它们基于可以构建和共享的标准 OCI 映像。无论您在终端中的哪个位置,自动用户和主目录共享等主机集成都可以快速轻松地访问您的 Linux 环境。为什么容器机器容器通常是根据应用程序建模的。容器机器是根据 Linux 环境建模的。它运行映像的初始化系统,允许您注册长时间运行的服务或在进程管理程序下测试您的应用程序。容器机器会自动将您的用户名和主目录映射到 Linux 环境中。您的存储库和点文件在两个平台上都可用。直接在 macOS 上使用编辑器和工具,同时在 Linux 环境中构建和运行您的应用程序。在 Mac 上编辑,在内部构建。您的存储库位于 macOS 上的 $HOME 中,并安装在容器计算机内的 /Users/ 处。使用 macOS 编辑器或 IDE;在容器机器内编译并运行。使用 macOS 原生工具来处理 Linux 工件。 Mac 上的分析器、屏幕截图工具、浏览器和 GUI 调试器都会看到容器计算机看到的相同文件 - “我构建了它”和“我正在检查它”之间没有复制步骤。用于测试的真实 Linux 服务。运行数据库或任何您的堆栈需要的系统服务 - systemctl start postgresql 适用于安装了 systemd 的映像。每个目标发行版一个环境。创建与目标发行版一样多的容器机器 - alpine、ubuntu、debian。每个都具有与 Mac 相同的 $HOME 和相同的点文件。在各种发行版中快速测试您的应用程序。快速入门容器机 create alpine:latest --name dev 容器机 run -n dev whoami # 您的主机用户名,而不是 root 容器机 run -n dev pwd # /home/ — 您的 Mac 主目录,安装在容器机中 run -n dev # 交互式 shell; cd 进入 $HOME 容器机器运行中的存储库是获取 shell 或运行单个命令的方式。如果容器机器已停止,则运行首先启动它。在容器计算机中工作 打开 shell,或运行单个命令 如果没有命令,container machine run 将作为与您的主机帐户匹配的用户打开交互式 shell:container machine run -n dev 传递命令运行一次并退出:container machine run -n dev uname -a container machine run -n dev -- cat /proc/cpuinfo 设置默认值 选择默认容器计算机,以便可以删除 -n 标志:container machine set-default dev container machine run # 在 dev 上操作 列出、检查、停止、删除容器计算机ls # 列出所有容器机器 container machine Inspection dev # 一台容器机器的 JSON 详细信息 stop dev # 停止容器机器 容器机器 rm dev # 删除,包括其持久存储容器机器有别名 m ,所以 m ls 、 m run 等都可以工作。调整 CPU、内存大小,或更改磁盘上的本地安装容器计算机集更新配置。更改在下次停止和启动后生效: 容器机器 set -n dev cpus=4 内存=8G 容器机器 stop dev 容器机器运行 -n dev -- nproc 内存默认为主机内存的一半。 home-mount 可以是 rw (默认)、 ro 或 none 。携带您自己的容器计算机映像任何包含 /sbin/init 的 Linux 映像都可以用作容器计算机。例如,此 Dockerfile 使用 systemd 和常用命令行工具构建 Ubuntu 24.04 容器机器映像: FROM ubuntu:24.04 ENV 容器容器 RUN apt-get update && \ apt-get install -y \ dbus systemd openssh-server net-tools iproute2 iputils-ping curl wget vim-tiny man sudo && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* && \ 是 |取消最小化 RUN >/etc/machine-id RUN >/var/lib/dbus/machine-id RUN systemctl set-default multi-user.target RUN systemctl mask \ dev-hugepages.mount \ sys-fs-fuse-connections.mount \ systemd-update-utmp.service \ systemd-tmpfiles-setup.service \ console-getty.service RUN systemctldisable \ networkd-dispatcher.service RUN sed -i -e 's/^AcceptEnv LANG LC_ \* $/#AcceptEnv LANG LC_*/' /etc/ssh/sshd_config 构建它并从中创建一个容器机器:container build -t local/ubuntu-machine:latest 。容器机器 create local/ubuntu-machine:latest --name ubuntu 默认情况下,容器在首次启动时运行内置设置脚本来配置上述用户。要使用您自己的设置,请将 /etc/machine/create-user.sh 处的可执行脚本添加到映像中。它在第一次启动时以 root 身份运行一次,并设置以下变量: CONTAINER_GID CONTAINER_HOME CONTAINER_MACHINE_ID CONTAINER_UID CONTAINER_USER