Frqux’s AI laboratory

AIの技術が進化する今日

Docker入門: コンテナ化技術の基礎

お久しぶりです。

今回は、開発でお世話になっているDockerについて解説していきます。

誰でもわかるよう簡単に書くことを目指していますので、初学者の方でも気軽に閲覧していってください。

Dockerとは

Dockerとは、コンテナ仮想化技術を提供するプラットフォームです。
OSやパッケージ、ライブラリなどをコンテナ内に展開・構築し環境を整えることができます。

簡単に言うと、皆さんが自分のPCにwslのubuntuなどを入れて、そこにnumpyやpandasやpytorchを入れて一生懸命環境構築していたものを、まとめて管理してくれるものです。

また、Dockerはバージョンを統一して環境を構築することもできるので、チームでの開発では、開発メンバー全員で環境を統一して進められる点も魅力です。


Dockerイメージ

Dockerについて説明する際に、Dockerイメージについて解説しなければいけません。

Dockerイメージとは、コンテナの設計図のようなもののことです。Dockerイメージを作成して、それに沿ってDockerコンテナが作成されます。

このDockerイメージは、読み取り専用で、変更することはできません。イメージを作成してしまえば、それ以降は全く同じ環境でコンテナを構築できるようになります。

また、Dockerfileというものもあり、これはDockerイメージを作るための設計図です。


設計図を作るための設計図?!


となるかと思いますが、そういうものなのです。

詳しく説明すると、Dockerfileには、使用するOSや使用するライブラリやパッケージをインストールするためのコマンドが書かれています。

プログラミング経験がある方ならわかるかもしれませんが、「pip install numpy」や「apt get ~~」とコマンドを打ってライブラリやパッケージをインストールしていたと思います。

これを必要数記述してあるのがDockerfileです。

Dockerfileの例を下に示します。

# ベースイメージの指定
FROM python:3.9

# 必要なパッケージのインストール
RUN pip install torch torchvision

# 作業ディレクトリの指定
WORKDIR /app

# コンテナ内にファイルをコピー
COPY pytorch_program.py /app/pytorch_program.py

# コンテナ実行時に実行するコマンド
CMD ["python", "/app/pytorch_program.py"]

- FROM python:3.9 ... pythonのバージョン3.9を使用
- RUN pip install torch torchvision ... torchとtorchvisionをインストール
- WORKDIR /app ... 作業ディレクトリをappとする。もしコンテナ内にappディレクトリがなかった場合、自動でappディレクトリが作成されます。
- COPY pytorch_program.py /app/pytorch_program.py ... 実際に実行するpytorchプログラムを、コンテナ内にコピーする。コンテナに入って作ってもいいが、vimやnanoなどのエディタがない場合が多いので、こうするほうがいい。
- CMD ["python", "/app/pytorch_program.py"] ... コンテナ起動時に実行されるコマンドです。この場合、
[ python /app/pytorch_program.py ]が実行されます。


このように、Dockerfile内に、使用するベースイメージと一連のコマンドを記しておくことで、自分の思い通りの環境を立ち上げることができるようになります。

あとはこれをイメージ化して、いつでもコンテナとして起動できるようにするだけです。


Docker Hub

Docker Hubは、コンテナイメージを共有しているプラットフォームです。
ここには、数々のDockerイメージが共有されており、自分で環境構築しなくとも必要な環境をダウンロードして使うことができます。

ここには、大手の会社が配布するイメージや、公式のイメージが多数あるので安心して使えるだけでなく、実際の開発環境と近い状態で自分自身も開発を進められるというメリットがあります。


Docker主要コマンド一覧

以下にDockerコマンドを記します。

コマンド 説明
docker build -t イメージ名 Dockerfileのパス
Dockerfileをビルドしてイメージにする
docker run -d --name コンテナ名 イメージ名
イメージからコンテナを作成・実行する
docker images
Dockerイメージの一覧を見る
docker ps
Dockerコンテナの一覧を見る
docker stop コンテナ名またはID
Dockerコンテナを停止する
docker rm コンテナ名またはID
Dockerコンテナの削除
docker rmi イメージ名またはID
Dockerイメージの削除
docker exec コンテナ名またはID コマンド
起動中のコンテナ内でコマンドを実行する
docker exec -it コンテナ名またはID bash
起動中のコンテナ内でbashシェルを使用する
docker logs コンテナ名またはID
Dockerコンテナのログを見ることができる
docker cp ローカルファイルのパス コンテナ名またはID:コンテナ内のパス
ローカル環境にあるファイルをコンテナ内のディレクトリにコピーする
docker push イメージ名
作成したDockerをDocker Hubなどにプッシュする
docker pull イメージ名
Docker Hubなどからイメージをプルする
docker network create ネットワーク名
Docker networkを作成する
docker network ls
Docker networkの一覧を見る


今回は主要なコマンドのみを紹介をしましたが、ほかにも様々なコマンドがありますので、気になる方は各自調べてください。


まとめ

今回はDockerについて簡単に説明してみました。

Dockerを使えば他記事で紹介している環境でも、簡単に作れてしまうのでぜひ習得することをおすすめします。

ではまた。

最後まで閲覧いただきありがとうございます!