今回は Docker上にUbuntuのGUI環境を構築し、Windows App(Microsoft Remote Desktop)から接続する方法 を紹介します。
仮想マシン(VirtualBox / Parallels)を使わずに、DockerだけでUbuntuデスクトップ環境を作成できます。
さらに以下も実現します。
- Ubuntu GUI(デスクトップ環境)
- Windows App(Microsoft Remote Desktop)接続
- SSH接続
- Mac上でLinux仮想PCを動作
- Linuxコマンド学習環境の構築
完成イメージ
Mac
└ Docker Desktop
└ Ubuntu Container
├ SSH接続
└ GUI(RDP接続)
Dockerコンテナですが、ほぼ Ubuntu仮想PC として利用できます。(学習用)
動作環境
- macOS: Tahoe 26.3
- Docker: Desktop: 29.1.3
- RDPクライアント: Windows App(Microsoft Remote Desktop)
作業ディレクトリ作成
mkdir ubuntu-rdp
cd ubuntu-rdp
Dockerfile 作成
touch Dockerfile
Dockerfile の内容
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y \
sudo \
xfce4 \
xfce4-goodies \
xfce4-terminal \
xrdp \
openssh-server \
dbus-x11 \
&& apt clean
RUN mkdir /var/run/sshd
RUN useradd -m ubuntu && \
echo "ubuntu:ubuntu" | chpasswd && \
adduser ubuntu sudo
RUN echo "startxfce4" > /home/ubuntu/.xsession && \
chown ubuntu:ubuntu /home/ubuntu/.xsession
EXPOSE 22
EXPOSE 3389
COPY start.sh /start.sh
CMD ["/start.sh"]
起動スクリプト作成
touch start.sh
chmod +x start.sh
start.sh
#!/bin/bash
service ssh start
service xrdp start
tail -f /dev/null
Docker Image 作成
docker build -t ubuntu-rdp .
コンテナ起動
docker run -d \
-p 2222:22 \
-p 13389:3389 \
--name ubuntu-desktop \
ubuntu-rdp
起動確認:
docker ps
# 以下が出ていればOK
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6659c3535c0a ubuntu-rdp "/start.sh" 39 minutes ago Up 39 minutes 0.0.0.0:2222->22/tcp, [::]:2222->22/tcp, 0.0.0.0:13389->3389/tcp, [::]:13389->3389/tcp ubuntu-desktop
SSH接続
ssh ubuntu@localhost -p 2222
# パスワードを入力
password:
# 初回接続時は以下が出るのyesを入力する
The authenticity of host '[localhost]:2222 ([::1]:2222) ' can't be established.
ED25519 key fingerprint is: SHA256:NS0S9n8ZBsSIxIoSnHmySS0XK+zVFvV+bhwGBCIFmxE
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
パスワード:
ubuntu
Windows App 接続
Macの Windows App を起動。
| 項目 | 設定 |
|---|---|
| PC Name | localhost:13389 |
| User | ubuntu |
| Password | ubuntu |
接続すると Ubuntu デスクトップが表示されます。

ターミナルが起動しない場合の対処
GUIでターミナルを開くと以下エラーが出る場合があります。

これは Ubuntu が GNOME Terminal を優先しているため発生します。
修正方法
sudo update-alternatives --config x-terminal-emulator
表示例:
2 /usr/bin/xfce4-terminal.wrapper
を選択します。
私の場合は以下のような感じで表示されたので、「2」を選択しています。

Docker上でUbuntu GUIが動く理由
Dockerは仮想マシンではありませんが、MacのDocker Desktop内部ではLinux VMが動作しています。
Mac
↓
Docker Desktop(Linux VM)
↓
Ubuntu Container
↓
XFCE Desktop
そのためGUI環境も構築可能です。
コンテナ停止・起動
停止:
docker stop ubuntu-desktop
起動:
docker start ubuntu-desktop
環境は保持されます。
まとめ
Dockerを利用することで、
- 仮想マシン不要
- 軽量Ubuntu環境
- GUI操作可能
- SSH接続可能
Ubuntu開発環境を簡単に構築できました。
DockerはCLI用途だけでなく、デスクトップLinux環境としても利用可能です。
感想
最近Linuxコマンドのノックを受けたいと思い、
VirtualBoxが利用できなかったためDockerで環境構築しました。
学習用途としては十分「仮想Linux PC」として使えています。
コーヒー1杯分の応援をいただけると励みになります!