はじめに
Mac Studioを使うことになりました。今後、計算コストの高い処理を行う予定があるため、できるだけリソースを効率的に使いたいと考えています。そこで、GUI環境は軽量に抑えつつ、Docker上でUbuntuを構築し、VNCとSSHで最低限の操作ができる環境を整えてみました。
……とはいえ、Mac Studioの性能に甘えて快適に動くことを期待していたのですが、実際には「意外と快適ではない」場面もちらほら。軽量構成がゆえにGUI環境の構築にはそれなりの工夫が必要だと痛感しました。
本記事では、その構成と動作確認の記録をまとめています。検証用としては十分ですが、快適さを求める方には少し物足りないかもしれません。
動作環境
Windows 11(VNC ViewerでUbuntuへアクセス)
Mac Studio(macOS 15.5)
Ubuntu 22.04(Mac Studio内のDockerコンテナ)
環境構築
- SSHとVNCが動くほぼ最低構成になっています
- root:rootpassword や mypassword はハードコードのパスワードなので必要に応じて変更してください
- x86_64(Intel/AMD)アーキテクチャの処理が不要な場合は --platform=linux/amd64 を削除してください
# ベースをx86_64のUbuntuにする
FROM --platform=linux/amd64 ubuntu:22.04
# 環境変数設定(非対話的インストール)
ENV DEBIAN_FRONTEND=noninteractive
# 基本パッケージのインストール
RUN apt update && apt install -y \
xfce4 xfce4-goodies tightvncserver \
openssh-server wget curl git sudo \
build-essential cmake python3-dev \
&& apt clean && rm -rf /var/lib/apt/lists/*
# VNC用設定
RUN mkdir -p /root/.vnc && \
echo "mypassword" | vncpasswd -f > /root/.vnc/passwd && \
chmod 600 /root/.vnc/passwd
# SSH設定
RUN mkdir -p /var/run/sshd && \
echo 'root:rootpassword' | chpasswd && \
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# 起動スクリプト作成(VNCとSSHを起動)
RUN echo '#!/bin/bash\n\
vncserver :1 -geometry 1280x800 -depth 24\n\
/usr/sbin/sshd -D' > /root/start.sh && \
chmod +x /root/start.sh
# ポートを開放
EXPOSE 5901 22
# コンテナ起動時のコマンド
CMD ["/root/start.sh"]
動作確認
以下のコマンドで接続します。例としてrootを使用します。
SSHはホスト側の6080番ポートにマッピングしているため、以下のように接続します。
docker run -it -p 6080:22 -p 5901:5901 [コンテナ名]
ssh root@MacのIPアドレス -p 6080
下記のコマンドは初回のみでパスワードを設定します。
vncserver
VNCセッションを起動
vncserver :1 -geometry 1280x800 -depth 24
まとめ
Mac Studioの性能に頼りすぎず、Docker上でUbuntu GUI環境を構築する方法を紹介しました。VNCとSSHが動けば十分という方には、ちょうどいい構成かもしれません。GUI環境を手軽に試したい方や、リソースを抑えた検証環境を探している方の参考になれば幸いです。