Dockerについて
現状:グラボ付きサーバに入って jupyter notebook を導入したい
サーバに自分以外のメンバーが入っているので、依存関係を気にしたり、環境構築に時間をかけたくない!
→Dockerを導入することで様々な問題の回避が可能に
Dockerとは
アプリケーションの実行に必要な環境を一つのイメージにまとめ、そのイメージを使って様々な環境でアプリケーション実行環境を構築・運用するためのオープンソースプラットフォーム
コンテナ仮想化技術の提供
Dockerのメリット
可搬性(ポータビリティ)
コンテナで依存関係や環境設定を含む完全な実行環境をパッケージ化
異なる環境でアプリケーション実行可能
効率的なリソース利用
コンテナが仮想マシンよりも軽量
高速なデプロイメント
アプリケーションのパッケージ化と複製を容易に行える
コンテナの起動と停止が瞬時に可能
バージョン管理の一元化
依存関係やライブラリのバージョンなどをイメージごとに管理可能
Dockerの機能
大きく分けて三つの機能
Dockerイメージを作る(build)
実行環境で動くコンテナのひな型であるDockerイメージを作る
Dockerイメージを共有(Ship)
DockerイメージをDockerレジストリで共有可能
Docker Hubを通して他者と共有したり、GitHubとの連携も可能
Dockerコンテナを動かす(Run)
Dockerイメージさえあれば、Dockerを入れた環境どこでもコンテナを動かすことができる
Dockerの導入について
今回はサーバのOSがLinuxなので、Linux用のDocker導入方法について触れる
Linuxへのインストール
sudo apt-get update でAPTをアップデート
HTTPS経由でレポジトリを使用できるように、パッケージをインストール
GPGキーというDockerの公式が出している鍵を取得(レポジトリ登録の際にデジタル署名を用いて正当なものかを確認する)
レポジトリを登録
sudo apt-get install docker-ceでDockerをインストール
Docker環境でJupyter Labを立ち上げて使う
大まかな手順として
①Docker環境を構築するディレクトリの準備
②Dockerイメージの作成の準備
③Dockerコンテナの起動
④JupyterLabにアクセス
①Docker環境を構築するディレクトリの準備
ディレクトリ構成として次の形がひな形となるので、ディレクトリを作成し、カレントディレクトリも作成したディレクトリに移動させておく
my-jupyter-project
Dockerfile
docker-compose.yml
requirements.txt
work-dir
jupyterLabのipynbファイル群
今回はmy-jupyter-projectディレクトリを準備する
②Dockerイメージの作成の準備
Dockerイメージを構成する三つのファイルを作成
Dockerfile Dockerイメージの設計書
基礎となるDockerイメージの指定
インストールしたいpythonパッケージをプリインストールする 'requirement.txt' を指定しインストールの準備
docker-compose.yml Dockerイメージの作成、コンテナ起動のオプション指定
コンテナ名の作成
composeの際に指定するservices名の作成
command:でDockerコンテナ起動時に最初に実行する命令を記述
ports:でホストOSとDockerコンテナのポート番号を指定
requirement.txt python環境で使いたいパッケージなどを記述
③Dockerコンテナの起動
docker-compose up service名でDockerイメージを作ってDockerコンテナを起動
-dを末尾に着けるとバックグラウンドモードで起動できる(大江)
④JupyterLabにアクセス
compose時にコンソール画面に表示されるトークンを取得し、JupyterLabにアクセス