前回(前回記事([Review]Docker上にAnacondaコンテナ作成))は、Docker上にAnacondaをコンテナとして作成・起動しましたが、CUI(condaコマンド等)利用のみ可能で、GUI(Anaconda Navigator)利用ができませんでした。
今回は、GUI(Anaconda Navigator)利用可能な、Anacondaコンテナを作成します。
※ここでは〔Dockerfile単体ビルド〕でコンテナ作成しています。
1.Dockerfileの作成
※このDockerfileは、Anaconda Navigatorが依存しているライブラリをインストールします。
# 基本となるイメージの指定 FROM continuumio/anaconda3 # 任意のメタデータやラベルを設定(例として) LABEL maintainer="your_email@example.com" \ version="1.0" # 必要なライブラリとツールのインストール ※適宜変更が必要 RUN apt-get update && apt-get install -y \ libgl1-mesa-glx \ libegl1-mesa \ libxrandr2 \ libxrandr2 \ libxss1 \ libxcursor1 \ libxcomposite1 \ libasound2 \ libxi6 \ libxtst6 \ libxkbcommon-x11-0 \ libxcb-icccm4 \ libxcb-image0 \ libxcb-keysyms1 \ libxcb-randr0 \ libxcb-render-util0 \ libxcb-xinerama0 \ libxcb-xfixes0 # dbusのインストール ※Anaconda Navigator動作には必須ではないが、ワーニング対策で追記 RUN apt-get install -y dbus # 環境変数の設定 ※Anaconda Navigator動作には必須ではないが、ワーニング対策で追記 ENV XDG_RUNTIME_DIR=/tmp/runtime-root # コンテナの起動時に実行するコマンドを指定 CMD [ "/bin/bash" ]
2.Dockerイメージのビルド
docker build -t anaconda-gui-image:latest .
※以下はDocker Desktop上のイメージ画面
3.Anacondaコンテナの作成・実行
・docker run -it –name <作成・実行するコンテナ名>
-e DISPLAY=host.docker.internal:0.0 <元にする基本イメージ>
※後日ポートマッピング設定追加:
docker run -it -p 8000:8000 –name anaconda-dockerfile-gui-container -e DISPLAY=host.docker.internal:0.0 anaconda-gui-mount-image:latest
※GUIアプリケーションを実行するための設定とともにコンテナを作成・起動しています。
※上記コンテナ作成済の場合は、次のコマンドで直接起動して下さい。
docker start -ai anaconda-gui-container
4.Windows側でXサーバの起動
※Windows上でXサーバを動作させるためのツールを起動(以下の(2))します。
※もしツールが未インストールの場合は(以下の(1)で)インストールが必要
(1) VcXsrv Windows X Serverダウンロード・インストール
① 一般的には、VcXsrv Windows X Serverを使用します。
② オプションを指定して「Next」をクリック
③ インストール先フォルダを指定して「Install」をクリック
④ インストール完了後「Close」をクリック
(2) VcXsrv起動
① XLaunchショートカットキーをダブルクリック
② 『Multiple windows』を指定して「次へ」をクリック
③ 『Start no client』を指定して「次へ」をクリック
※「Client startup」や「Select how to start clients」の選択は、VcXsrv Windows X Serverを起動する際に、どのような動作をするかを指定するものです。(以下、それぞれの選択肢の説明です) start no client: このオプションを選択すると、Xサーバ自体のみが起動し、その後の任意の時点でクライアントプログラム(GUIアプリケーション)を手動で開始することができます。これは、特定のGUIアプリケーションを自動的に開始したくない場合や、複数の異なるアプリケーションを順番に起動したい場合に便利です。 Start a program: このオプションを選択すると、Xサーバの起動と同時に指定したクライアントプログラム(GUIアプリケーション)も自動的に開始されます。これは、特定のアプリケーションを常にXサーバと一緒に起動したい場合に便利です。さらに、SSHを介してリモートのマシン上のアプリケーションを起動することも可能です。 ※Anaconda NavigatorのようなDockerコンテナ内のアプリケーションを表示する場合、最初は「start no client」を選択するのが最もシンプルで、その後DockerコンテナからGUIアプリケーションを手動で起動します。
④ 拡張設定を指定して「次へ」をクリック
※ここでは4項目ともチェックしています。
※各設定項目についての説明: Clipboard: このオプションをチェックすることで、WindowsとDockerコンテナ内のアプリケーション間でクリップボードを共有できます。これは、テキストのコピーやペースト操作が頻繁に行われる場合に便利です。 Primary Selection: これもチェックすると、LinuxのPRIMARYセレクション(テキストを選択するだけでコピーされる特性)もWindowsのクリップボードと同期されます。 Native opengl: GUIアプリケーションがOpenGLを使用する場合、このオプションを有効にして、ネイティブのWindows OpenGLライブラリを利用することが推奨されます。ただし、Anaconda NavigatorのようなシンプルなGUIツールの場合、このオプションをチェックしなくても問題ないことが多いです。 Disable access control: これをチェックすると、VcXsrvはすべてのクライアントからの接続を許可します。セキュリティのリスクがあるため、ローカルネットワークでのみ使用することを推奨します。Dockerコンテナからの接続を許可する場合には、このオプションをチェックする必要があります。 Additional parameters for VcXsrv: 特定の追加のパラメータが必要な場合にのみ、この入力欄にパラメータを入力します。通常、デフォルトのままで問題ありません。
⑤ そのまま「完了」をクリック
⑥ もし以下の警告ダイアログが表示されたら『アクセスを許可する』をクリック
6.Anaconda Navigator起動
(上記手順「3.Anacondaコンテナの実行」で起動したコンテナ内で)
※service dbus start ※↑これは以下のワーニング対策で講じたものだが、解決に至りませんでした。 結果として、Anaconda Navigatorの動作に問題がなかったので、これについては無視対応しました。
anaconda-navigator
を実行
↓
※Anaconda Navigator起動
以上で、Anacondaコンテナから(Xサーバ経由で)GUI(Anaconda Navigator)を起動して管理する環境の作成が完了しました。