このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Dockerで簡単にUbuntuコンテナにGUIで接続する方法

ここでは、Dockerで簡単にUbuntuコンテナにGUIで接続する方法を紹介します。

 docker-ubuntu-vnc-desktop イメージを使用すると簡単にGUIでUbuntuコンテナに接続できるようになります。

docker-ubuntu-vnc-desktop イメージとは

 docker-ubuntu-vnc-desktop は、Ubuntu LXDE/LxQT デスクトップ環境にアクセスするための Web VNC インターフェイスを提供する Docker イメージです。Docker Hub に登録されています。

URL:https://hub.docker.com/r/dorowu/ubuntu-desktop-lxde-vnc

 「dorowu/ubuntu-desktop-lxde-vnc」イメージは、Docker Hubで公開されているUbuntuベースのDockerイメージの1つです。このイメージは、軽量なデスクトップ環境であるLXDE(Lightweight X11 Desktop Environment)とVNC(Virtual Network Computing)サーバーがインストールされており、リモートデスクトップアクセスを可能にします。

以下は、このイメージが提供する主な機能や特徴です。

・Ubuntuベース

 イメージはUbuntu Linuxディストリビューションをベースにしています。Ubuntuは広く使用されているLinuxディストリビューションであり、多くのユーザーが馴染みのある環境です。

・LXDEデスクトップ環境

 LXDEは、リソース消費が少なく高速なLinuxデスクトップ環境の1つです。軽量なデスクトップ環境を提供し、古いハードウェアやリソースが限られているシステムでも快適に動作します。

・VNCサーバー

 VNCは、リモートデスクトップ接続を実現するためのプロトコルです。VNCサーバーがインストールされており、このイメージを起動すると、リモートからのデスクトップアクセスを可能にします。これにより、コンテナ内で実行されているデスクトップ環境をリモートから操作できます。

・カスタマイズ可能

 イメージはカスタマイズ可能であり、ユーザーが独自のアプリケーションや設定を追加できます。また、Dockerfileを使用してイメージを拡張することもできます。

 「dorowu/ubuntu-desktop-lxde-vnc」イメージを使用することで、Ubuntuベースの軽量なデスクトップ環境を簡単に構築し、リモートからアクセスすることができます。

不要なDockerオブジェクトの削除

まず、不要なDockerオブジェクトをすべて削除しておきます。

以下のコマンドを実行します。

・「docker system prune -a」コマンドを実行します。

Are you sure you want to continue? [y/N] の質問には「y」と入力します。

PS C:\Users\joeac> docker system prune -a
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N] y
Deleted Containers:
(略)

・「docker system prune -a」コマンドで削除されなかったDockerオブジェクトは、個別に削除しておきます。

環境によって削除されずに残っているDockerオブジェクトは異なります。

compose.yaml の作成

compose.yamlファイルを作成するためのディレクトリを作成します。

・ディレクトリの移動と作成

まず、作業ディレクトリに移動しておきます。

・「cd desktop/docker」コマンドを実行します。

PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker>

 「compose.yaml」ファイルを保存する「gui-ubuntu1」ディレクトリを作成して、作成したディレクトリに移動します。次のコマンドを実行します。

  • 「mkdir gui-ubuntu1」コマンド
  • 「cd gui-ubuntu1」コマンド
PS C:\Users\joeac\Desktop\docker> mkdir gui-ubuntu1

    Directory: C:\Users\joeac\Desktop\docker

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2024/05/03    22:09                gui-ubuntu1

PS C:\Users\joeac\Desktop\docker> cd gui-ubuntu1
PS C:\Users\joeac\Desktop\docker\gui-ubuntu1>
・VSCodeの起動

VSCodeで「compose.yaml」ファイルを作成します。

・「code compose.yaml」コマンドを実行します。

PS C:\Users\joeac\Desktop\docker\gui-ubuntu1> code compose.yaml

VSCodeが起動します。

・「compose.yaml」ファイルの編集

・「compose.yaml」ファイルを以下のように編集して保存します。

services:
  ubuntu-gui1:
    image: dorowu/ubuntu-desktop-lxde-vnc
    container_name: ubuntu-gui1
    tty: true
    ports:
      - 8080:80
・定義内容の解説

「compose.yaml」の定義を解説します。

キー説明
servicesコンテナの定義を含むセクション。
ubuntu-gui1サービスの名前。
imagedorowu/ubuntu-desktop-lxde-vncコンテナを起動するために使用するDockerイメージ。
container_nameubuntu-gui1コンテナの名前を指定。
ttytrueコンテナのプロセスにTTYを割り当てるかどうかを指定。TTYが割り当てられると、コンテナの標準入出力が相互に接続される。
ports– 8080:80ホストOSのポート8080をコンテナのポート80にマッピングする。この設定により、ホストOSの8080ポートにアクセスすると、コンテナの80ポートにアクセスする。
「compose.yaml」の定義

コンテナの作成と実行

・「docker compose up -d」コマンドを実行します。

このコマンドは、「compose.yaml」ファイルを配置した場所で実行する必要があります。

PS C:\Users\joeac\Desktop\docker\gui-ubuntu1> docker compose up -d
[+] Running 17/17
 ✔ ubuntu-gui1 Pulled                                          19.9s
   ✔ a70d879fa598 Pull complete                                 1.6s
   ✔ c4394a92d1f8 Pull complete                                 0.7s
   ✔ 10e6159c56c0 Pull complete                                 0.7s
   ✔ 6d516dea5dcb Pull complete                                 1.6s
   ✔ 2c326a79b2c1 Pull complete                                 6.8s
   ✔ 77c398b95e39 Pull complete                                 6.4s
   ✔ 1a5adfd9ff08 Pull complete                                 7.2s
   ✔ d8327acdb588 Pull complete                                 7.4s
   ✔ b4d11d536f7c Pull complete                                 7.5s
   ✔ 0403b18ddc74 Pull complete                                 7.9s
   ✔ c163d8624a71 Pull complete                                 9.2s
   ✔ 1dc3570b5fa6 Pull complete                                 8.1s
   ✔ 6f9c71cf3486 Pull complete                                 9.3s
   ✔ e02f721e36c7 Pull complete                                 9.0s
   ✔ ba596a49f65e Pull complete                                 9.7s
   ✔ 31c6cc0bdd8d Pull complete                                 9.9s
[+] Running 2/2
 ✔ Network gui-ubuntu1_default  Created                         0.0s
 ✔ Container ubuntu-gui1        Star...                         0.9s
PS C:\Users\joeac\Desktop\docker\gui-ubuntu1>

UbuntuへのGUI接続

・WebブラウザのURLに「localhost:8080/」と入力します。

UbuntuをGUIで操作できるようになります。

ターミナルへの起動

LXTerminalを起動します。

Ubuntuのバージョンの確認

Ubuntuのバージョンを確認します。

・「cat /etc/os-release」のコマンド実行します。

ベースイメージが、Ubuntu20.04 LTSであることが確認できます。

少々古いバージョンですが、学習環境としては手軽に利用できて便利かと思います。