2020年11月13日にAmazonが公開したブログでLightsail Containersの紹介がありました。
これを使ってtiryoh/ros-desktop-vncを起動してみたので紹介します。
雑に書くと、Docker Hub等に公開されているイメージをLightsailから直接起動できるというものです。
ros-desktop-vncについては以下の記事に経緯と使い方を書いているので参考にしてみてください。
このDockerfileでビルドできるイメージを使うことで、基本的なROSパッケージ以外は入っていない環境を、使い捨て感覚で簡単に起動できます。
GitHubにてDockerfileを公開していて、DockerイメージもついでにDocker HubにPushしています[1]tiryoh/ros-desktop-vnc, tiryoh/ros2-desktop-vncが、あくまでDockerfileの公開がメインです。
イメージの更新が止まっている等ありましたら、皆さん各自でビルドしてDocker HubやGitHub Container RegistryにPushして利用してみてください。
また、AWSはROSやGazeboに特化したRobomakerというサービスも展開しています。
データをきちんととっておきたいような用途ではRobomakerを使うのがよいと思います。
注意事項
料金について
AWSは無料枠もありますが、基本的には有料サービスです。
今回紹介する方法だと1時間単位での課金となりますが、フルで使うと10 USD/月かかります。
安全面について
また、今回紹介する方法はセキュリティに対する配慮はありません。
常に起動しておくような使い方は控えてください。
データについて
データはコンテナ再起動時に削除されます。
使い方
Lightsailで「コンテナサービスを作成」を選択します。
コンテナサービスの場所はどこでもよいと思います。今回は日本であるap-northeast-1
を選択しました。
パワーはMicro、規模はx1を選びます。
コンテナ名はわかりやすいものをつけます。今回は「ros-desktop-vnc-melodic
」としました。
イメージはDockerfileでFROM
に指定するものを設定します。今回はROS Melodicを試そうと思ったのでtiryoh/ros-desktop-vnc:melodic
としました。ROS 2 Foxyであればtiryoh/ros2-desktop-vnc:foxy
になると思います。
起動コマンドは/startup.sh
とします。
環境変数はHTTP_PASSWORD
を設定します。ここで設定した文字列でVNCクライアントにアクセスします。
開くポートは80
を指定します。
パブリックエンドポイントには先ほどコンテナ名につけたものを指定します。
サービス名を適当に付け、料金確認後に「コンテナサービスを作成」をクリックします。
ステータス保留中のまま数分待ちます。
ステータスが実行中になったらPublic domainのURLをクリックします。
BASIC認証のあるページが起動するのでここでユーザ名「ubuntu
」とパスワードを指定します。
ここのパスワードは環境変数はHTTP_PASSWORD
を設定したものです。
問題なければデスクトップが起動します。
BASIC認証が設定されてはいるものの、セキュリティに対する配慮は特にないので、使い終わったら「削除」しておきましょう。
1時間単位で請求金額が決まるので、使い終わったら即削除しておいた方が金銭的にお得です。
便利な使い方
APTパッケージをAWS内のサーバからダウンロードする
APTのパッケージリストをAWS内のサーバから取得するように変更することでAWS内のサーバからパッケージをダウンロードできるようになります。
この変更をすることでパッケージのダウンロード速度が速くなるだけでなく、コンテナ内でのapt install
がAWS内の通信となり、通信量にカウントされないと思います(未確認)。
sudo sed -i -e "s#mirror://mirrors\.ubuntu\.com/mirrors\.txt#http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/#g" /etc/apt/sources.list
ウィンドウをリサイズする
初回に解像度の低い画面や小さいウィンドウでブラウザを開くと、以後、以下のようにデスクトップのサイズが小さい状態になります。
$URL/resize
にアクセスし、リロードするとデスクトップの解像度を変更できます[2]こちらのissueコメントに詳細があります。
https://github.com/fcwu/docker-ubuntu-vnc-desktop/issues/115#issuecomment-522426037。
まとめ
AWSのLightsailでDockerイメージを直接起動できるということだったので、Ubuntu Desktop(LXDE)+VNCサーバ+Webブラウザから使用するVNCクライアント+WEBサーバ+ROS/ROS2がインストールされている、tiryoh/ros-desktop-vncを使ってみました。
このDockerfileから作れるイメージはあくまで使い捨て用途のテスト環境です。とりあえず複数のROSディストリビューションでテストしてみたいというような用途で使えるかなと思います。
↑1 | tiryoh/ros-desktop-vnc, tiryoh/ros2-desktop-vnc |
---|---|
↑2 | こちらのissueコメントに詳細があります。 https://github.com/fcwu/docker-ubuntu-vnc-desktop/issues/115#issuecomment-522426037 |
コメント