LoginSignup
10
5

More than 1 year has passed since last update.

ブラウザ操作のリモードデスクトップ環境(KasmVNC)をDockerで実行する手順

Posted at

概要

KasmVNC という、ウェブブラウザを経由してアクセスできるリモードデスクトップ環境を、Dockerでセットアップする手順です。

動作確認や機能検証を意図しています。

image.png

説明

KasmVNC とは、リモードデスクトップ環境を提供するソフトで、Docker コンテナ内にウェブサーバと WebSocket サーバが組み込まれています。つまり、ブラウザさえあれば Ubuntu の Desktop 環境にアクセスしたり、Terminal のみの環境を用意できます。オープンソース(GPL v2.0)で公開されており、Docker イメージは Docker Hub 上で公開されています。

Docker コンテナで動かせるため、1つの Linux ホスト上で複数の環境を(リソースが許す限り)混在できます。リモードデスクトップの操作は、VNC クライアントを必要とせず、すべてブラウザから操作します。

そのため用途としては、たとえば、フィッシング詐欺等やウイルスの懸念があり、PCを通した URL でのアクセスを躊躇する場合、その調査用として使うことが想定できます。あるいは、完全にサンドボックス環境として、壊しても良い Linux デスクトップ環境としても使えるという期待ができます。また、古のゲーム Doom イメージ も公開されており、気分転換にプレイしても良いかもしれません。

利用できるデスクトップやアプリケーションの種類は Docker Hub の Kasm Technologies のリポジトリ で確認できます。たとえば、 desktop は標準的なデスクトップ環境ですし、 ubuntu-bionic-desktop であれば Ubuntu 18.04 のデスクトップ環境です。また、 terminal であれば、その名の通りターミナルだけを操作可能な環境にします。

全画面表示ができたり、クリップボードを編集できるなど、割と使い勝手は良い印象です。

一方、 sudo コマンドでシステムの設定変更ができなかったり、ibus が起動できないため日本語環境が設定できない課題がありそうです(回避策は調べています。何か分かったら追記します)。

本記事は Linux サーバでの利用を想定しています。VPS なり様々な Iaas 環境のサーバ等々を利用できますが、ブラウザに対するストリーミングを行うため、環境によっては課金や帯域等、考慮が必要になる場合があります。なお私は、さくらのクラウド上の Ubuntu Server 20.04 + Docker Engine 20.10.16 で試しました。

また、Docker Desktop でも動作するだろうとは思いますが(まだ試していません)、イメージがギガ単位で大きいため、環境によってはイメージをダウンロードするだけでも時間がかかる可能性があります。

設定方法

事前準備

  • Linux ホスト上に Docker Engine をセットアップし、 docker コマンドが使えるようにする必要があります。

共通する作業の流れ

起動コマンド

sudo docker run --rm  -it --shm-size=512m -p 6901:6901 -e VNC_PW=<パスワード>kasmweb/<イメージ名>:<タグ>
  • --shm-size=512m はドキュメント例示のデフォルトのままですが、必要があれば変えてもいいかもしれません。
  • Port マッピングの -p 6901:6901 は、ホスト側のポート重複がなければ、複数のコンテナを同時実行できます。
  • <パスワード> はブラウザからの認証に使うためのパスワード。ちなみにユーザ名は kasm_user
  • <イメージ名>Docker Hub の Kasm Technologies のリポジトリ にあるものを指定。
  • <タグ> は、それぞれのイメージのタグ。 latest は存在していないので、現行バージョンであれば 1.10.0-rolling のような指定が必須。

起動したいイメージを起動しようとすると、イメージのダウンロードが始まります。起動が完了するまで待ちます(画面にログが流れます)。

起動完了すると、ブラウザで https://<ip>:6901/ に HTTPS で接続を試みます。コンテナ起動時、自己署名の SSL 証明書を作成しているため、ブラウザでは警告が出ます。これを解除すると、ブラウザからアクセスできます。

ブラウザの認証画面では、 ユーザ kasm_user 、パスワードは docker run 時に指定したものです。

接続に成功すると、ブラウザはこのような画面になります。「接続」をクリックすると、それぞれのデスクトップやアプリケーションに接続します。

image.png

画面左側に出ている部分で、全画面に切り替えたり、設定メニューを表示できます。

image.png

終了は Ctrl+C です。バックグラウンドで起動した場合は docker stop などで止めます。

Ubuntu のデスクトップを起動する手順

ubuntu-bionic-desktop:1.10.0 (18.04)イメージや ubuntu-focal-desktop:develop-rolling (20.04)のイメージを使います。

20.04の開発版:

sudo docker run --rm  -it --shm-size=512m -p 6901:6901 -e VNC_PW=mypassword kasmweb/ubuntu-focal-desktop:develop-rolling

※ VNC_PW は書き換えてください

ブラウザで指定したポートにアクセスし、認証した後、接続すると、このようにデスクトップ環境を操作できます。

image.png

Chorome を使う手順

kasmweb/chrome:1.10.0-rolling イメージを使います。

sudo docker run --rm  -it --shm-size=512m -p 6901:6901 -e VNC_PW=mypassword kasmweb/chrome:1.10.0-rolling

image.png

Terminal を使う手順

kasmweb/terminal:1.10.0-rolling イメージを使います。

sudo docker run --rm  -it --shm-size=512m -p 6901:6901 -e VNC_PW=mypassword kasmweb/terminal:1.10.0-rolling

何の変哲もない Terminal だけが起動できます。

image.png

何かコマンドを実行してみましょう。

image.png

Doom を使う手順

kasmweb/doom:1.10.0-rolling イメージを使います。

sudo docker run --rm  -it --shm-size=512m -p 6901:6901 -e VNC_PW=mypassword kasmweb/doom:1.10.0-rolling

image.png

他にも何か面白そうなものがないか、探してみてはどうでしょう。

Enjoy!

注意点

Docker イメージの容量が大きいので、システム上の容量圧迫に注意が必要です。容量が少ない場合、油断していると、すぐに圧迫します。

ubuntu@kasm1:~$ docker images
REPOSITORY                      TAG              IMAGE ID       CREATED        SIZE
kasmweb/centos-7-desktop        1.10.0-rolling   e006f385c881   23 hours ago   3.41GB
kasmweb/terminal                1.10.0-rolling   7baf989f9f9e   23 hours ago   1.46GB
kasmweb/desktop                 1.10.0-rolling   bb2885052746   23 hours ago   1.78GB
kasmweb/ubuntu-bionic-desktop   1.10.0           60c7f07497b3   6 months ago   5.45GB

参考

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5