【Docker】Anacondaで開発環境を構築する

今回はDockerでAnaconda環境をベースとした開発環境を構築する手順を紹介します。

前提

今回の環境はWindows11です。

Dockerについてはインストール済みであることが前提です。インストールが済んでいない方は以下URLを参照ください。

Dockerとは?についても紹介しています。

Dockerイメージとは?

環境構築をする前にDockerについてもう少し整理をしておきます。Dockerを使っていると、「Dockerイメージ」や「Dockerコンテナ」といったワードが出てきます。

これらは混同しがちなので、まずはこれらを整理します。

Dockerでアプリケーションの実行環境を構築するまでには、大きく以下3つのステップがあります。

  • Docker file
  • Dockerイメージ
  • Dockerコンテナ
Docker file、Dockerイメージ、Dockerコンテナ

Docker file

Docker fileはDockerイメージを作成する際の設計書にあたります。実体は、Dockerイメージの設計内容(OS、ミドルウェアに何を使うか等)をコマンドとしてまとめたファイルです。

Dockerイメージを自作する際には、このDocker fileを編集します。Docker fileをビルドすることでDockerイメージを作成できます。

Dockerイメージ

DockerイメージはDockerコンテナの動作環境をまとめたものです。DockerイメージにはOSやアプリケーション、アプリケーション実行のコマンドやその他メタデータ等様々な情報が含まれています。

クラウドレジストリであるdockerhubにはdocker利用可能なイメージが多数配布されています。

Dockerコンテナ

Dockerイメージは実行(run)することで初めて使うことができます。Dockerイメージを実行するとDockerコンテナが作成されます。

DockerコンテナはDockerイメージに基づいたアプリケーションの実行環境、インスタンスです。1つのDockerイメージを実行すると、1つのDockerコンテナが作成されます。

Docker+Anaconda環境の構築

今回はDocker fileの自作はせず、dockerhubからAnacondaのイメージを取得し、そこからコンテナを作成することで環境を構築していきます。

Dockerイメージの取得

まずはdockerhubからAnaconda公式が配布しているdockerイメージを取得します。

https://hub.docker.com/r/continuumio/anaconda3

Power Shellを開き、以下のコマンドを実行します。以下コマンドでは、最新のAnacondaをインストールします。

docker pull continuumio/anaconda3

過去バージョンを利用したい場合は、上記URLから「Tags」のタブを選択すると、過去バージョンが表示されます。取得したいバージョンのコマンドをコピーして実行してください。

取得したdockerイメージの確認

dockerイメージを取得したら、以下コマンドで取得したイメージを確認します。他にもdockerイメージを入れている場合はここに表示されますが、今回は1つだけ表示され、Anacondaのdockerイメージを取得できていることを確認できました。

docker images

>>
REPOSITORY              TAG       IMAGE ID       CREATED        SIZE
continuumio/anaconda3   latest    52531efac757   5 months ago   4.07GB

コンテナの作成

次に取得したDockerイメージからコンテナを作成します。コンテナ作成、起動には以下コマンドを実行します。

docker run -it continuumio/anaconda3

すると、コンテナ環境のrootディレクトリに入ります。

あるいは、イメージIDでもコンテナ作成、起動が可能です。イメージIDはdocker imagesコマンドで確認が可能です。

docker run -it 52531efac757

コンテナ環境から抜けるには以下のコマンドを実行します。

exit

フォルダをマウントしたコンテナの作成

上記方法では、コンテナの作成はできるものの、Windowsのファイルシステムとの互換性がなく、コンテナ上でのファイル操作がやや難しいです。

そこで、次はWindowsのCドライブ上の任意のディレクトリをコンテナの実行環境(実際にはJupyterの実行環境)としてマウントし、コンテナを起動します。

まずはCドライブにコンテナからマウントさせるフォルダを作成します。今回は以下のフォルダを作成しました。

C:\Project\docker\anaconda

コンテナ作成&起動コマンド実行時に、マウント指定をします。-vコマンドがそれにあたります。指定方法は、windows側パス:コンテナ側パスです。Windows側パスは絶対パスで指定します。

docker run -v C:\Project\docker\anaconda:/root -p 8888:8888 -it continuumio/anaconda3

これで、WindowsのCドライブにマウントしたコンテナを起動できます。

jupyter notebookの起動

最後にAnacondaに入っているアプリケーションであるjupyter notebookを起動します。今回はrootディレクトリをベースとして起動します。

以下コマンドは、コンテナに入った状態で実行します。

jupyter notebook --ip 0.0.0.0 --allow-root --no-browser --NotebookApp.disable_check_xsrf=True  --NotebookApp.token='' --NotebookApp.password='' /root

起動したら、ブラウザでhttp://localhost:8888/を実行します。notebookの画面が出てくれば成功です。

フォルダがマウントされていることを確認するために、rootディレクトリとしてマウントしたディレクトリにファイルを作成します。

sample.xlsxを作成

きちんとマウントされていれば、notebook側でもファイルが反映されているはずです。

rootディレクトリ

まとめ

今回はDockerでAnaconda環境をベースとした開発環境を構築する手順を紹介しました。

筆者はディレクトリのマウンティングに苦労したので、環境構築する際は是非参考になれば幸いです。

ではでは👋