前回(前回記事([Review]Docker上にAnacondaコンテナ作成))は、Docker上にAnacondaをコンテナとして作成・起動しましたが、CUI(condaコマンド等)利用のみ可能で、GUI(Anaconda Navigator)利用ができませんでした。
今回は、GUI(Anaconda Navigator)利用可能な、Anacondaコンテナを作成します。
※ここでは〔Dockerfile単体ビルド〕でコンテナ作成しています。
1.Dockerfileの作成
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-85.png?resize=640%2C515&ssl=1)
※この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 .
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-62.png?resize=640%2C43&ssl=1)
※以下はDocker Desktop上のイメージ画面
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-67.png?resize=640%2C361&ssl=1)
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
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-68.png?resize=640%2C19&ssl=1)
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-86.png?resize=640%2C88&ssl=1)
※GUIアプリケーションを実行するための設定とともにコンテナを作成・起動しています。
※上記コンテナ作成済の場合は、次のコマンドで直接起動して下さい。
docker start -ai anaconda-gui-container
4.Windows側でXサーバの起動
※Windows上でXサーバを動作させるためのツールを起動(以下の(2))します。
※もしツールが未インストールの場合は(以下の(1)で)インストールが必要
(1) VcXsrv Windows X Serverダウンロード・インストール
① 一般的には、VcXsrv Windows X Serverを使用します。
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-70.png?resize=583%2C37&ssl=1)
② オプションを指定して「Next」をクリック
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-71.png?resize=422%2C291&ssl=1)
③ インストール先フォルダを指定して「Install」をクリック
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-72.png?resize=425%2C291&ssl=1)
④ インストール完了後「Close」をクリック
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-73.png?resize=423%2C291&ssl=1)
(2) VcXsrv起動
① XLaunchショートカットキーをダブルクリック
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-74.png?resize=82%2C76&ssl=1)
② 『Multiple windows』を指定して「次へ」をクリック
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-75.png?resize=511%2C370&ssl=1)
③ 『Start no client』を指定して「次へ」をクリック
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-76.png?resize=511%2C368&ssl=1)
※「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項目ともチェックしています。
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-77.png?resize=511%2C369&ssl=1)
※各設定項目についての説明: 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: 特定の追加のパラメータが必要な場合にのみ、この入力欄にパラメータを入力します。通常、デフォルトのままで問題ありません。
⑤ そのまま「完了」をクリック
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-78.png?resize=509%2C368&ssl=1)
⑥ もし以下の警告ダイアログが表示されたら『アクセスを許可する』をクリック
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-79.png?resize=600%2C424&ssl=1)
6.Anaconda Navigator起動
(上記手順「3.Anacondaコンテナの実行」で起動したコンテナ内で)
※service dbus start ※↑これは以下のワーニング対策で講じたものだが、解決に至りませんでした。 結果として、Anaconda Navigatorの動作に問題がなかったので、これについては無視対応しました。
anaconda-navigator
を実行
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-86.png?resize=640%2C88&ssl=1)
↓
※Anaconda Navigator起動
![](https://i0.wp.com/zakku-spot.com/wp-content/uploads/2023/08/image-83.png?resize=600%2C380&ssl=1)
以上で、Anacondaコンテナから(Xサーバ経由で)GUI(Anaconda Navigator)を起動して管理する環境の作成が完了しました。