python を使用する上で必要な環境を作成したいと思います。
Jupyter Lab とは Jupyter Notebook の後継ツールで、ブラウザ上で動作させることができる対話実行型環境です。
データー分析には欠かすことができないツールの一つです。
「Google Colabo」でクラウド上で簡単にPythonの実行環境構築ができますが、インターネットが繋がっていない環境ですと使用ができないためローカル環境で使用することができる「Jupyter Lab」を使用したいと思います。
「Google Colabo」同様に「Jupyter Lab」でも入力したプログラムの結果がすぐに表示され確認できるためとても便利で使いやすいです。
「Jupyter Lab」はローカル環境に直接インストールして使用することも可能ですが、今回はローカル環境を汚す(不要なファイルをインストールすること)なく構築したいため「docker」を使って環境構築を作成したいと思います。
Jupyter Lab 環境構築
Dockerのインストール
まずはお使いのPCに「Docker」をインストールしてください。
※今回はインストール手順を省略します。「Dokcer」は現在プログラミングにおいてほぼ必須の技術となっています。まだ使用されたことのない方はこの機会に慣れると良いと思います。
Dockerに使用するディレクトリの作成
ホームディレクトリに「docker」ディレクトリを作成し、その中に「dl」ディレクトリを作成します
今回はホームディレクトリに「docker」ディレクトリを作成し、その中に Jupyter Lab 用として「dl」ディレクトリを作成します。
Users/ユーザー名/docker/dl
※ディレクトリの構成はお好みで変更してください。
Dockerfile、 docker-compose.yml、 ワークスペースディレクトリの作成
「dl」ディレクトリの中に「dockerfile」「docker-compose.yml」「workspace」(←ディレクトリ) を作成してください。
ディレクトリの構成は下記のようになります。
dl/
├── workspace/
├── dockerfile
└── docker-compose.yml
また「dockerfile」「docker-compose.yml」の中身は下記をコピーして貼り付けて保存をしてください。
・dockerfile (※拡張子は無しなので注意してください)
FROM ubuntu:latest
RUN apt-get update && apt-get install -y sudo wget vim curl gawk make gcc
RUN wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh && \
sh Anaconda3-2021.05-Linux-x86_64.sh -b && \
rm -f Anaconda3-2019.03-Linux-x86_64.sh && \
sudo curl -sL https://deb.nodesource.com/setup_10.x | sudo bash - && \
sudo apt-get install -y nodejs
ENV PATH $PATH:/root/anaconda3/bin
RUN pip install --upgrade pip
RUN pip install pandas_datareader
RUN pip install mplfinance
RUN wget --quiet http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz -O ta-lib-0.4.0-src.tar.gz && \
tar xvf ta-lib-0.4.0-src.tar.gz && \
cd ta-lib/ && \
./configure --prefix=/usr && \
make && \
sudo make install && \
cd .. && \
pip install TA-Lib && \
rm -R ta-lib ta-lib-0.4.0-src.tar.gz
RUN mkdir /workspace
CMD ["jupyter-lab", "--ip=0.0.0.0","--port=8888" ,"--no-browser", "--allow-root", "--LabApp.token=''"]
・docker-compose.yml
version: '3'
services:
jl:
container_name: jl
build: ./
ports:
- 8888:8888
volumes:
- ./workspace:/workspace
以上で「Jupyter Lab」の環境構築は完成です。
あとは dockerコマンド を実行するだけです。
dockerコマンドの実行
まずはコンテナをビルドします。
下記のコマンドを実行してください。
コンテナのビルド
docker build -t jl:latest /Users/ユーザ名/docker/jl
※さきほど作成した「dockerfile」があるディレクトリを指定しています。ビルドには数分かかると思います。しばらくお待ち下さい。
ビルドが完了しましたら、コンテナを実行します。
下記のコマンドを実行します。
コンテナの実行
docker run -p 8888:8888 -v /Users/ユーザー名/docker/jl/workspace:/workspace —name jI イメージID
イメージIDは下記コマンドで調べることがきます。
起動していないコンテナも含め全て表示
docker ps -a
※「CONTAINER ID」「IMAGE」「COMMAND」「CREATED」「STATUS」「PORT」「NAMES」の項目が表示されます。
※「IMAGE」の項目がイメージIDとなります。
あとはブラウザの下記アドレスを入力してください
http://localhost:8888/lab
もしくは
http://127.0.0.1:8888/lab
上図の画面が立ち上がれば問題ありません。
docker comose コマンドを使用する
「docker compose」コマンドを使用すると便利なことがあります。
さきほどの説明ではコンテナを実行するとき下記のコマンドを使用しました
docker run -p 8888:8888 -v /Users/ユーザー名/docker/jl:/workspace —name jI イメージID
コマンドがとても長いですよね。。。
コマンドの詳細な説明は省きますが、ホスト側のポート「8888」とコンテナのポート「8888」を繋げ、ホスト側の「jl」ディレクトリにコンテナの「workspace」をマウントするように指定します。
コンテナはコンテナをダウンする毎(パソコンの電源を落としたり)にコンテナ内のデータは消えてしまうため、ホスト側と同期をして消えないようにしています。
毎回このコマンドを入力するのは手間ですよね。
その手間を省くために「docker-compose.yml」を作成しました。
こちらのファイルにポートを繋げる設定や、マウントする場所を予め指定おいてこのファイルの実行することによってコマンドの入力の手間を簡単にします。
下記コマンドを実行してください。(こちらのコマンドもターミナルで先に「Users/ユーザー名/docker/dl」ディレクトリに移動してから実行してください)
docker compose run jl
さきほどのコマンドと比べるととても短く覚えやすくなったと思います。
「docker-compose.yml」は複数のコンテナを同時に起動するときに使用するファイルですが、今回はそれを使用しました。
Jupyter Lab環境の構築を考えてられる方の一助になれば幸いです。
わからないことなどあれば質問をコメントでいただければ私の分かる範囲であればお答えしますのでお気軽に質問してください。
※おまけ よく使うコマンド
現在起動中のコンテの確認
docker ps
全てのコンテナの確認
docker ps -a
ポート衝突時ポートが衝突していないか調べる
lsof -I:8888
使用中プログラムを止める
kill -9 [process id]
ンテナ内部に入るコマンド
docker exec -it jlab bash ←出る場合は exit
コンテナ削除
docker rm コンテナID
イメージの削除
docker rmi イメージID
コメント