Dockerの概要
Dockerとは、OSレベル仮想化プラットフォームソリューションです。Dockerイメージを用いたコンテナ仮想化システムを構築し、仮想化実行環境を実現します。Dockerにより環境の複製と配布が容易にできるため、開発のスクラップアンドビルドが効率的に実施できます。 【参考】:Docker
Jupyter Notebookとは?
Jupyter Notebookとは、オープンソースソフトウェアの統合開発環境(IDE)です。エディタ・言語処理・デバッグ・実行作業を単一操作環境から利用できるようにしています。Jupyter Notebookはデータ分析機能があるため、ビッグデータのデータ分析・統合にも用いることができます。科学技術計算や機械学習等を目的とする方には特におすすめです。 【参考】:Project Jupyter | Home
JupyterLabとJupyter Notebookの違いですが、JupyterLabとJupyter NotebookはともにProject Jupyterのユーザインターフェイスとなります。JupyterLabはJupyter Notebookの次世代ユーザインターフェイスバージョンで、Jupyter Notebookの機能をカバーします。
DockerとJupyterのメリット
Dockerは単一OS上で複数のコンテナが実行できます。OSで用いるシステム資源は少なく、メモリー効率が高いので、「軽量で速い」と言われています。
Jupyter Notebookは、豊富なライブラリを用いてデータ分析を行うことができます。Jupyter Notebookのドキュメントはプログラムコードに加えて、数式や図式を入れることができるためデータ分析の統合開発環境として人気があります。
Dockerは環境複製が容易で開発・テスト・配布サイクルを短周期で進めることができ、Jupyter Notebookを併用することで科学技術計算やデータ分析の分野でも効率的に開発できます。さらにホスト側はVSCodeを用いて、VSCode Remote Developmentでコンテナ上のJupyter Notebookと接続しデータ分析を行うこともできるため、多様な業務に対応可能です。
Dockerのセットアップ
Dockerでは、Windows版・Mac版・Linux版のダウンロードモジュールが用意されています。Mac版・Windows版ではDocker Desktopを利用し、Linux版ではDocker Engineをインストールしておきます。実際のインストール作業は以降で紹介します。 【参考】:Get Started with Docker
Docker Windows版のセットアップ概要
Docker Desktopは、Docker Hubのサイトからダウンロードできます。インストール時のConfiguration画面の確認が問題なければ、簡単にインストールが完了します。 【参考】:Docker Desktop for Windows 【参考】:Install Docker Desktop on Windows
インストール方法は以下の通りです。 ・ダウンロードモジュールの起動 Docker Desktop Installer.exeを起動します。
・Configuration画面の確認 「Enable Hyper-V Windows Features」と「 Install required Windows components for WSL 2」のオプション設定を確認します。
・インストール実行 手順に従い「Install」を選択し、終了後「Close」を選択します。
・管理者アカウントの追加 管理者アカウントのadministratorとComputer Managementをdocker-usersグループに追加します。
最初の起動時には新しいライセンス条項が表示されますので、「Accept」をクリックすることで利用可能になります。
Docker Mac版のセットアップ概要
Docker DesktopはDocker Hubのサイトからダウンロードできます。Mac版も特に問題なくインストールが完了します。 【参考】:Docker Desktop for Mac 【参考】:Install Docker Desktop on Mac
インストール方法は以下の通りです。 ・ダウンロードモジュールの起動 Docker.dmgをダブルクリックしインストーラを起動します。
・アプリケーションフォルダに登録 Dockerアイコン(Docker.app)をアプリケーションフォルダーにドラッグアンドドロップします。
Windows同様、最初の起動時には新しいライセンス条項が表示されますので、「Accept」をクリックすることで利用可能になります。
Jupyter Notebookを使うは?
Jupyter Notebookを使うには、通常パッケージマネージャを用いてJupyter Notebookをインストールします。”pip install jupyter”等でインストールします。ここではDocker Hubからイメージを入手し、DockerでJupyter Notebookを起動する作業を解説していきます。 【参考】:Docker Hub jupyter
Docker Hubに登録されているイメージは18種類です。多岐に渡る用途から必要なイメージを選択します。代表的な主要イメージの用途は次の通りです。
「基本ベースイメージ」 ・jupyter/base-notebook condaパッケージマネージャ2種類用notebook・jupyterhub・jupyterlabのパッケージです。
「基本最小パッケージ」 ・jupyter/minimal-notebook jupyter/base-notebookにコマンドラインツールを同梱したものです。
「R向けイメージ」 ・jupyter/r-notebook jupyter/minimal-notebookにRインタープリタ・ベース環境を追加したものです。
「科学技術計算向けパッケージ」 ・jupyter/scipy-notebook jupyter/minimal-notebookにPython科学技術計算関連パッケージを同梱したものです。
「科学技術計算向け機能拡張パッケージ」 ・jupyter/tensorflow-notebook jupyter/scipy-notebookにAIディープラーニング用ライブラリを追加したものです。
・jupyter/datascience-notebook jupyter/scipy-notebookとjupyter/r-notebookにデータ分析用Julia・Python・R communitiesを追加したものです。
・jupyter/pyspark-notebook jupyter/scipy-notebookにApache SparkとPythonモジュールを追加したものです。
「科学技術計算向けApache Sparkフルパッケージ」 ・jupyter/all-spark-notebook jupyter/pyspark-notebookにApache SparkとPython・R・Scalaモジュールを追加したものです。
Jupyter Notebookのコンテナ起動
Jupyterを起動するには、Docker CLIを用います。一般用途であれば「基本最小パッケージ」であるjupyter/minimal-notebookを使います。科学技術計算向けパッケージの場合は用途に応じて適切なイメージを選択します。 【参考】:Jupyter Docker Stacks
ここでは、事前に”docker pull イメージ名”でイメージをダウンロードしておきます。バージョン指定する場合はTagを指定します。ここではTagはデフォルト指定(latest)とします。
docker pull jupyter/minimal-notebook
起動は次のように行います。ここではコンテナ名をnotebookとします。
docker run -d -P -name notebook jupyter/minimal-notebook
オプションの”-d”はバックグラウンド実行、”-P”はランダム生成されたポートを利用、”-name”はコンテナ名を設定します。必要に応じてオプション指定し、実行してください。
コンテナ内のディレクトリをホスト側のフォルダと同期させる場合は、”docker run”に-vオプションでバインドマウント指定することができます。DockerのSettingでCドライブをマウントしている場合は、以下のように利用できます。
docker run -d -P -v c:/Users:/opt/work -name notebook jupyter/minimal-notebook
表示されたURLにアクセスすることで、Jupyter Notebookにアクセスできます。ポート8888にHTTP接続し、ユーザーインターフェースから停止することもできます。Dockerを停止するには次のようにコマンドを起動します。
docker stop notebook
コンテナ削除のコマンドは次のように実行します。
docker rm notebook
Jupyter Notebookが起動しない場合、Docker自体が正常動作するか先に確認してください。”docker run hello-world”が起動できたらDockerは正常です。アクセスできない場合はポート番号やURLが正しいことを実行後のコンソール表示内容を確認してください。
DockerとJupyterで開発環境を整備しましょう
Jupyter NotebookはPythonの開発環境として、科学技術計算全般に効果的です。AI分析やビッグデータ解析が脚光を浴びており、短期間での開発や分析が求められます。Dockerは開発・テスト・配布を短サイクル化することができます。
このソフトウェアスタックと環境を活用し、高まる開発生産性向上の求めに対応するためにも必要な準備を進めていきましょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから