DockerでUbuntuデスクトップ環境を構築してRDP接続する方法(SSH対応)

DockerでUbuntuデスクトップ環境を構築してRDP接続する方法(SSH対応)

今回は 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 Namelocalhost:13389
Userubuntu
Passwordubuntu

接続すると 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杯分の応援をいただけると励みになります!

Stripe で安全に決済
プロフィール画像

Yukiya

札幌在住Webエンジニア。Next.js / React / TypeScript / PHP。 技術・ガジェット・キャンプ・コーヒーなど、エンジニアの生活を良くする話題を発信しています。

コメントを残す

メールアドレスは公開されません。必須項目には * が付いています。

CAPTCHA