ウェブサイト検索

デスクトップ環境と VNC を使用して Docker で Ubuntu Linux を実行する |


デスクトップ環境と VNC を使用して Docker で Ubuntu Linux を実行する方法に関するこのガイドへようこそ。多くの場合、物理マシン/仮想マシンに Ubuntu デスクトップをインストールするのは面倒な作業であり、プロビジョニングとインストールに多くの時間がかかります。デスクトップ環境で Ubuntu Linux を実行するために使用できる簡略化された方法があります。 Docker に感謝します。

Docker イメージを使用すると、LXDE および LXQt デスクトップ環境で Ubuntu を実行し、HTML5 VNC インターフェイス経由でアクセスできます。 Docker イメージを使用して次のような他の構成を作成できるため、これはさらに魅力的です。

  • HTTPベース認証
  • SSL暗号化
  • デフォルトのデスクトップ ユーザー設定
  • 画面解像度の調整
  • jinja テンプレートから Dockerfile を生成する
  • サウンド (プレビュー バージョンおよび Linux のみ)
  • サブディレクトリ (相対 URL ルート) にデプロイします。

さらに、Ubuntu には次のようないくつかのバージョンとフレーバーがあります。

  • 焦点: Ubuntu 20.04 (最新)
  • focus-lxqt: Ubuntu 20.04 LXQt
  • バイオニック: Ubuntu 18.04
  • bionic-lxqt: Ubuntu 18.04 LXQt
  • xenial: Ubuntu 16.04 (非推奨)
  • 信頼できる: Ubuntu 14.04 (非推奨)

飛び込んでみましょう!

ステップ 1 – システムに Docker をインストールする

もちろん、Ubuntu Docker イメージを実行できるようにするには、システムに Docker エンジンがインストールされている必要があります。以下は、Linux ディストリビューションに Docker エンジンをインストールするのに役立つ専用ガイドです。

  • Linux システムに Docker CE をインストールする方法

Docker を起動し、システム起動時に自動的に実行できるようにします。

sudo systemctl start docker && sudo systemctl enable docker

システム ユーザーを Docker グループに追加すると、sudo を使用せずに Docker コマンドを実行できるようになります。

sudo usermod -aG docker $USER
newgrp docker

インストールされている Docker のバージョンを確認します。

$ docker version
Client: Docker Engine - Community
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.16.12
 Git commit:        e91ed57
 Built:             Mon Dec 13 11:45:48 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
....

ステップ 2 – Ubuntu Docker イメージをプルする

前に述べたように、プルできる Ubuntu のイメージがいくつかあります。これらのイメージは Docker ページで入手でき、示されているように Docker を使用してプルできます。

##For Ubuntu 20.04 (latest)
docker pull dorowu/ubuntu-desktop-lxde-vnc:latest

##For Focal with LXDE
docker pull dorowu/ubuntu-desktop-lxde-vnc:focal

##For Focal with LXQt
docker pull dorowu/ubuntu-desktop-lxde-vnc:focal-lxqt

##For Bionic with LXDE
docker pull dorowu/ubuntu-desktop-lxde-vnc:bionic

##For Bionic with LXQt
docker pull dorowu/ubuntu-desktop-lxde-vnc:bionic-lxqt

##For Trusty 
docker pull dorowu/ubuntu-desktop-lxde-vnc:trusty

##For Xenial
docker pull dorowu/ubuntu-desktop-lxde-vnc:xenial

目的の Ubuntu イメージを取得したら、それがローカル レジストリで利用可能かどうかを確認します。

$ docker images
REPOSITORY                       TAG       IMAGE ID       CREATED         SIZE
dorowu/ubuntu-desktop-lxde-vnc   latest    1a89db715923   10 months ago   1.32GB

ステップ 3 – デスクトップ環境で Ubuntu コンテナを実行する

ここでは、Ubuntu コンテナーを実行して直感的なエクスペリエンスを実現する方法について、構成を含むいくつかの方法を説明します。

クイックスタート。

以下のコマンドを使用して、コンテナを実行し、ポート 6080 経由でアクセスするだけです。

docker run -d \
  --name ubuntu_desktop \
  -v /dev/shm:/dev/shm \
  -p 6080:80 \
  dorowu/ubuntu-desktop-lxde-vnc

上記のコマンドでは、コンテナ名を ubuntu_desktop に設定し、永続ボリュームを /dev/shm に設定しています。 ubuntu-desktop-lxde-vnc を、取得した適切なイメージに忘れずに置き換えてください。

コンテナがポートを公開した状態で実行されているかどうかを確認します。

$ docker ps
CONTAINER ID   IMAGE                            COMMAND         CREATED          STATUS                             PORTS                                   NAMES
f8fd69e3865e   dorowu/ubuntu-desktop-lxde-vnc   "/startup.sh"   17 seconds ago   Up 15 seconds (health: starting)   0.0.0.0:6080->80/tcp, :::6080->80/tcp   ubuntu_desktop

出力からわかるように、ポート6080が公開されています。ファイアウォールの通過を許可し、URL http://IP_Address:6080/ を使用して Ubuntu デスクトップへのアクセスを続行します。

HTTPベース認証を設定する

上記のコマンドに HTTP_PASSWORD 変数を追加することで、ポート 6080 で HTTP ページにアクセスするときに使用するパスワードを設定することもできます。

docker run -d \
  --name ubuntu_desktop \
  -e HTTP_PASSWORD=Passw0rd \
  -v /dev/shm:/dev/shm \
  -p 6080:80 \
  dorowu/ubuntu-desktop-lxde-vnc

ページにアクセスすると、パスワードの入力が求められます。

VNC ビューアを有効にする

VNC ビューアには別のポート 5900 経由でアクセスしますが、アクセスするにはこのポートを公開する必要があります。 VNC Viewer ポートは以下のように公開できます。

docker run -d \
  --name ubuntu_desktop \
  -v /dev/shm:/dev/shm \
  -p 6080:80 \
  -p 5900:5900 \
  dorowu/ubuntu-desktop-lxde-vnc

ここで、VNC ビューアはポート 5900 で利用できるはずです。

上記のコマンドに VNC_PASSWORD 変数を追加することで、ビューアのパスワードを設定することもできます。

docker run -d \
  --name ubuntu_desktop \
  -e VNC_PASSWORD=StrongPassword \
  -v /dev/shm:/dev/shm \
  -p 6080:80 \
  -p 5900:5900 \
  dorowu/ubuntu-desktop-lxde-vnc

VNC ビューアにアクセスするときは、VNC にアクセスするために設定されたパスワードを入力する必要があります。

SSLで暗号化します。

暗号化用の SSL 証明書を生成できます。このガイドでは、以下のように自己署名証明書を生成します。

続行する前に、OpenSSL がシステムにインストールされていることを確認してください。

mkdir -p ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ssl/nginx.key -out ssl/nginx.crt

コンテナを実行するときに、 以下のように SSL_PORT と生成された証明書への パス を指定する必要があります。

docker run -d \
  --name ubuntu_desktop \
  -v /dev/shm:/dev/shm \
  -p 6081:443 \
  -e SSL_PORT=443 \
  -v ${PWD}/ssl:/etc/nginx/ssl \
  dorowu/ubuntu-desktop-lxde-vnc

ここでは、URL https://IP_address:6081 を使用して Ubuntu デスクトップにアクセスできます。

デフォルトのデスクトップ ユーザーを設定する

コンテナを実行するとき、デフォルトのユーザーはルートです。ただし、次のように USER 変数と PASSWORD 変数を使用して別のユーザーを追加できます。

docker run -d \
  --name ubuntu_desktop \
  -e USER=thor \
  -e PASSWORD=Passw0rd \
  -v /dev/shm:/dev/shm \
  -p 6080:80 \
  dorowu/ubuntu-desktop-lxde-vnc

ここで、Passw0rd というパスワードを持つ別のユーザー thor を追加します。

サブディレクトリにデプロイする

コンテナはサブディレクトリにデプロイされ、 ページにアクセスするときのプレフィックスとして機能します。たとえば、ここでは URL サブディレクトリを新規として指定します。

次に、RELATIVE_URL_ROOT 環境変数を使用してサブディレクトリを指定します。

docker run -d \
  --name ubuntu_desktop \
  -e RELATIVE_URL_ROOT=new \
  -p 6080:80 \
  dorowu/ubuntu-desktop-lxde-vnc

ディレクトリには先頭と末尾のスラッシュ (/) を含めないでください。これで、URL http://IP_address:6080/new/ を使用して Ubuntu デスクトップにアクセスできるようになりました。

画面の解像度を設定します。

通常、仮想デスクトップはサーバーに接続するときにブラウザのウィンドウ サイズに自動的に調整されます。ただし、以下のように変数 RESOLUTION を使用して固定解像度を設定できます。

docker run -d \
  --name ubuntu_desktop \
  -v /dev/shm:/dev/shm \
  -p 6080:80 \
  -e RESOLUTION=1360x768 \
  dorowu/ubuntu-desktop-lxde-vnc

仮想デスクトップの解像度が1360×768(16:9)に設定されます。

サウンドを有効にする

まず、以下のカーネル モジュールを Linux システムに挿入します。

sudo modprobe snd-aloop index=2

次に、以下のようにサウンドを有効にしてコンテナを実行します。

docker run -d \
  --name ubuntu_desktop \
  -v /dev/shm:/dev/shm \
  -p 6080:80 \
  --device /dev/snd \
  -e ALSADEV=hw:2,0 \
  dorowu/ubuntu-desktop-lxde-vnc

上記のコマンドでは、 –device /dev/snd -e ALSADEV=hw:2,0 によってコンテナにサウンドが許可され、 基本的な ASLA が設定されます。 > カード 2 を使用するためのデバイス設定。これで、サウンドが有効になったコンテナが完成しました。サウンド/ビデオを再生してこれをテストします。

ステップ 4 – コンテナを管理する

次のコマンドを使用して、Ubuntu コンテナを簡単に停止および起動できます。

##To stop
docker stop ubuntu_desktop

##To start
docker start ubuntu_desktop

##To delete
docker rm ubuntu_desktop

さらに、以下のサービスファイルを作成することで、コンテナをシステムサービスとして管理することができます。

sudo vim /etc/systemd/system/ubuntu-container.service

ファイルに次の行を追加します。

[Unit]
Description=Ubuntu container

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a ubuntu_desktop
ExecStop=/usr/bin/docker stop -t 2 ubuntu_desktop

[Install]
WantedBy=local.target

次に、システム デーモンをリロードします。

sudo systemctl daemon-reload

コンテナーを起動し、起動時に自動的に実行されるようにします。

sudo systemctl start ubuntu-container
sudo systemctl enable ubuntu-container

サービスのステータスを確認します。

楽しむ!

終わりの思い。

これで、デスクトップ環境で目的の Ubuntu フレーバーを実行する最も簡単な方法が得られました。さらに、コンテナをできるだけ直感的にするために、コンテナに行うことができるさまざまな構成を見てきました。

関連記事。

  • Podman|DockerコンテナでMicrosoft SQL Serverを実行する
  • DockerコンテナでQuestDB SQLデータベースを実行する方法
  • UbuntuにFreeOfficeをインストールする方法

関連記事: