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 ファイルの内容を説明して行きます。

  1. FROM continuumio/miniconda3

    それではファイル内容を説明します。
    基本的にはただ単に Ubuntu に miniconda3 をインストールするのとその考え方はほぼ同じです。
    Docker Hub の中に Docker Image continuumio/miniconda3 がありますのでこれをインストールします。

  2. COPY . /app

    「.」は /home/yamada/d-minic
    を示しています。
    ここ(ホストOS内)にある例えば python ファイル test-1.py をコンテナ内の app フォルダへコピします。

  3. WORKDIR /app

    app フォルダはコンテナ内の作業場所であること宣言します。
    先ほどの test.py はこの中にコピされています。
    WORKDIR は Docker instruction の実行ディレクトリを変更するために設定します。
    そもそも RUN などの Docker の instruction (RUN、CMD、ENTRYPOINT、ADD、COPY といった命令)
    は全て root 直下で実行されます。
    WORKDIR を使うことで実行するディレクトリを変更してくれます。
    WORKDIR のパスは絶対パスで指定します。
    もし WORKDIR ではフォルダがない場合そのフォルダを作ってくれます。

  4. RUN conda install pandas

    Python パッケージ pandas を追加インストールします。

  5. 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 でコンテナを起動します。


  • Docker イメージ d-minic コンテナを起動 に進む
  • docker-miniconda3 コンテナの構築 に戻る
  • NVIDIA Container Toolkit インストール準備まとめ に戻る
  • Docker コンテナ miniconda3 に戻る
  • 70VPS に戻る