Windows11 WSL2 Ubuntu 24.04 LTS Docker miniconda3
dockerfile で continuumio/miniconda3 コンテナを起動
ここまでは $ docker run だけで continuumio/miniconda3 コンテナを起動しました。
今度は Dockerfile を使って continuumio/miniconda3 コンテナを起動します。
pandas を追加インストールします。
そして簡単な python ファイル tesy-1.py をこのコンテナの中で実行します。
この時、ホストマシンの OS (Ubuntu)とコンテナとの架け橋になる WORKDIR を設定します。
このディレクトリ WORKDIR 内でファイル操作やコマンドの実行が行われるようになります。
簡単に言うと、このフォルダに置いた py ファイルを実行することができるようになります。
win11+WSL+Docker Desktop(GPU container)+miniconda+intel MKLで環境構築
が参考になります。
コンテナ フォルダ作成
コンテナ フォルダを作成します。
yamada@yama:~$ mkdir d-minic
フォルダの名前は適当です。
作成できたか ls コマンドで確認します。
yamada@yama:~$ ls
[結果]
d-minic
ここには、テストファイルや Dockerfile ファイルを置きます。
簡単な python ファイル test-1.py 作成
コンテナの中でテスト実行する簡単な python ファイル tesy-1.py を作成します。
print ("Hello WORLD!!")
たった1行です。
自分の PC Windows で TeraPad 等を使用して
上記1行を作成しこれを保存します。
Windows 側のエクスプローラーにおいて、ネットワークの下に Linux のフォルダがあります。
Linux の中に
Ubuntu-24.04(\\wsl.localhost)
のフォルダがあります。
\\wsl.localhost\Ubuntu-24.04\home\yamada\d-minic
ここに tesy-1.py を保存します。
ファイル名は tesy-1.py です。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
continuumio/miniconda3 Dockerfile ファイル作成
Dockerfile ファイルの保存場所を作成し、Dockerfile ファイルの内容を説明して行きます。
- FROM continuumio/miniconda3
それではファイル内容を説明します。
基本的にはただ単に Ubuntu に miniconda3 をインストールするのとその考え方はほぼ同じです。
Docker Hub の中に Docker Image continuumio/miniconda3 がありますのでこれをインストールします。 - COPY . /app
「.」は /home/yamada/d-minic
を示しています。
ここ(ホストOS内)にある例えば python ファイル test-1.py をコンテナ内の app フォルダへコピします。
- WORKDIR /app
app フォルダはコンテナ内の作業場所であること宣言します。
先ほどの test.py はこの中にコピされています。
WORKDIR は Docker instruction の実行ディレクトリを変更するために設定します。
そもそも RUN などの Docker の instruction (RUN、CMD、ENTRYPOINT、ADD、COPY といった命令)
は全て root 直下で実行されます。
WORKDIR を使うことで実行するディレクトリを変更してくれます。
WORKDIR のパスは絶対パスで指定します。
もし WORKDIR ではフォルダがない場合そのフォルダを作ってくれます。 - RUN conda install pandas
Python パッケージ pandas を追加インストールします。
- VOLUME /app
ボリュームとは、データを永続化できる場所を指します。
Docker のコンテナ内部のデータはコンテナ破棄をすると消えてしまうため
データを永続化させるための手段としてボリューム(volume) が存在します。
Docker はコンテナ外にデータ保存領域をつくる機能を提供しています。
volumes は Docker のコンテナ内で作成したデータを永続化するための場所です。
volumes に保存したデータはコンテナを破棄しても残り再利用できます。
VOLUME /app
とすると、コンテナ外にデータ保存領域 /app を設定します。
具体的には
/var/lib/docker/volumes/app/_data/
にデータ保存領域が確保されます。
Dockerfile まとめ
以上をまとめると Dockerfile は以下のようになります。
FROM continuumio/miniconda3
COPY . /app
WORKDIR /app
RUN conda install pandas
VOLUME /app
自分の PC Windows で TeraPad 等を使用して
Dockerfile ファイル(内容 A)
を作成しこれを保存します。
Windows 側のエクスプローラーにおいて、ネットワークの下に Linux のフォルダがあります。
Linux の中に
Ubuntu-24.04(\\wsl.localhost)
のフォルダがあります。
\\wsl.localhost\Ubuntu-24.04\home\yamada\d-minic
ここに Dockerfile を保存します。
ファイル名は必ず
Dockerfile
です。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
Docker イメージ d-minic 作成
Docker イメージ d-minic を作成します。
コンテナ フォルダ \d-minic に移動します。
yamada@yama:~$ cd d-minic
移動できたら次のコマンドを入力実行します。
yamada@yama:~/d-minic$ docker build . -t d-minic ・・・ ①
まずは、docker build . -t コマンドで Docker イメージを構築します。
自分で構築した独自の Docker イメージです。
内容を理解しているのでこの先いかようにも自分で変更可能です。
できたイメージ名は d-minic になります。
docker build の 一つ目の引数で Dockerfile の場所を指定します。
今回は同じディレクトリに Dockerfile を設置していますので「.」で現在のディレクトリを指定しています。
二つ目の -t でその次に続く文字列を元に作成するイメージに名前と
一般的にバージョンを記憶するタグ(省略可)を指定します。
今回タグは省略しました。
例としては d-minic:latest のように書きます。
①の実行にはかなり時間がかかります。
yamada@yama:~/d-minic$ docker images
とすると
[結果]
REPOSITORY TAG IMAGE ID CREATED SIZE d-minic latest 6d5968bd2109 35 seconds ago 1.79GB ・・・・・・・・
ここまでで miniconda の中で numpy,pandas が動作する独自の Docker イメージ d-minic が完成しました。
引き続き Docker イメージ d-minic でコンテナを起動します。