はじめに
「Apple containerでmacOSにLinuxコンテナ環境を作る(ハンズオン)」によると、container machineで永続的なLinux環境をつくれるらしい。たまにLinuxのDesktopを使いたいことがあって、
UTM上のArch Linux ARMにXfce Desktop Environmentを入れているのですが、container machineにxrdpを入れて、Windows Appから繋げばいいのではと思ったので試してみました。なおXubuntuとかじゃなくArch Linux ARMなのは趣味です。
Apple containerのインストール
Apple containerのGitHub release pageからインストーラを入手できます。Homebrewでもインストールできます。私はHomebrewでインストールしました。
brew install container
インストール後、サービスを起動します。
container system start
ホストから[machine名].machineで接続できるように、DNSを設定します。
sudo container system dns create machine
container machineをつくる
以下のDockerfileを用意します。
# syntax=docker/dockerfile:1.7
FROM menci/archlinuxarm:base-devel
# Disable CheckSpace and DisableSandbox globally FIRST
RUN sed -i 's/^CheckSpace/#CheckSpace/' /etc/pacman.conf && \
sed -i '/\[options\]/a DisableSandbox' /etc/pacman.conf
# Install utilities and development tools
RUN --mount=type=cache,target=/var/cache/pacman/pkg,sharing=locked \
pacman -Syu --noconfirm --needed \
systemd \
openssh \
iproute2 \
iputils \
curl \
wget \
vim \
git \
sudo \
man-db \
man-pages \
xorg-server \
xorg-xinit \
xfce4 \
xfce4-goodies \
libfdk-aac \
ffmpeg \
fuse3 \
x264 \
pipewire \
pipewire-pulse \
wireplumber
# Build AUR packages as non-root user
RUN useradd -m builder && \
echo 'builder ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/builder && \
chmod 440 /etc/sudoers.d/builder
USER builder
WORKDIR /home/builder
RUN --mount=type=cache,target=/home/builder/.cache,sharing=locked \
--mount=type=cache,target=/var/cache/pacman/pkg,sharing=locked \
git clone --depth=1 https://aur.archlinux.org/xrdp.git && \
cd xrdp && \
makepkg -si --noconfirm --skippgpcheck && \
cd .. && \
git clone --depth=1 https://aur.archlinux.org/xorgxrdp.git && \
cd xorgxrdp && \
makepkg -si --noconfirm --skippgpcheck && \
cd .. && \
git clone --depth=1 https://aur.archlinux.org/pipewire-module-xrdp.git && \
cd pipewire-module-xrdp && \
sed -i '/^arch=/c\arch=("x86_64" "aarch64")' PKGBUILD && \
makepkg -si --noconfirm --skippgpcheck
USER root
WORKDIR /
# Cleanup builder user
RUN userdel -r builder && \
rm -f /etc/sudoers.d/builder
# Cleanup and systemd configuration
RUN systemctl set-default multi-user.target && \
systemctl mask \
sys-fs-fuse-connections.mount \
systemd-remount-fs.service \
dev-hugepages.mount && \
systemctl enable xrdp && \
systemctl --global enable pipewire.socket && \
systemctl --global enable pipewire-pulse.socket && \
pacman -Scc --noconfirm
RUN echo "exec startxfce4" > /etc/skel/.xinitrc
ENV container=docker
STOPSIGNAL SIGRTMIN+3
CMD ["/usr/lib/systemd/systemd"]
waynelloyd/apple-container-machine-archlinuxarmを参考にさせていただいた…というか、パクって必要なパッケージを追加しただけです。
buildします。
container build -t archlinux-xrdp .
buildが終わったら
container image list -v
とすると
NAME TAG INDEX DIGEST OS ARCH VARIANT FULL SIZE CREATED MANIFEST DIGEST archlinux-xrdp latest ee037736844a linux arm64 800.8 MB 2026-07-24T04:11:42.827675208Z 49510b6b525b menci/archlinuxarm base-devel 627d2d58ce9f linux arm64 392.6 MB 2026-07-19T07:10:28.648759071Z 4a3e2d4bf2fb
と表示されます。次に
container machine create archlinux-xrdp:latest -n archlinux
とすると、archlinuxという名前のcontainer machineがつくられます。
container machine list
とすると
NAME CREATED IP CPUS MEMORY DISK STATE DEFAULT archlinux 2026-07-24 12:26:33 192.168.64.2 4 12G 2.7G running *
と表示されると思います。IPはcontainer machine起動の都度変わります。
Windows Appから接続
ユーザーのパスワードを設定します。
container machine run -n archlinux --root
で、container machineに入って
passwd [ユーザー名]
で、パスワードを設定します。
いよいよWindows Appから接続してみます。設定は以下のような感じです。

PC nameにIPを指定してもいいですが、毎回変わって面倒です。先にsudo container system dns create machineしておいたのでarchlinux.machineで接続できます。
接続するとこんな感じです。

pipewireを入れたので音も出ます。
おわりに
Dockerfileに常用のパッケージを追加しておけば、いつもの環境がどこでも再現できて便利そうです。



