あんまりDockerについて調べていなかったので、自分の入門記事としてここに置いておきます。
Dockerとは
Docker は、コンテナ型の仮想化技術を活用してアプリケーションをパッケージ化し、どの環境でも同じように動作させるためのプラットフォームです。
まずアプリケーションを開発するには開発環境を整える必要があります。pythonアプリを作ったことがあるのでわかりやすいのですが、windows上で開発しているならpythonをwindowsにインストールして、pipコマンドでアプリに必要なpythonのパッケージをwindowsにインストールする必要があります。開発環境でも本番環境でも同じ手順をする必要があります。
windows上に直接入れるのが嫌であればvenvなどで仮想環境にしたり、WindowsがPro以上であればHyper-VでVMを作ってその上でやるということもできると思います。VMはOS領域もあるので作ると環境は分けられますがリソースを多く割くことになります。
そこでコンテナであればOS領域はホストと共有するためリソースの効率化ができます。また、コンテナを増やしたり減らしたりも柔軟に対応できます。
パッケージなどの依存関係や設定をイメージ化することが出来るため、そのまま本番環境に持っていくということもできるわけです。
本番環境で同じ環境を作ったつもりがパッケージにアップデートが入っていて違ったバージョンを入れていたなどのエラーも防ぐことが出来ます。
- OS領域を持たない仮想環境なので軽量で高速なため、リソースの効率化ができる
- スケーラビリティ(コンテナを増やしたり減らしたりできる柔軟性)が高い
- 環境構築の手間を削減できる
- 開発環境も本番環境も同一の環境になるため、トラブルが削減される
などのメリットになります。
環境構築がコンテナの実行だけになるため、CI/CDと組み合わせることでリリースを高速化できます。(CIが成功したあとCDで開発環境にコンテナで最新のビルドを実行させてテストさせるなど)
Windowsで簡単にDockerを試す
WindowsでDockerを試すには公式から提供されている Docker Desktop を利用するのが最も簡単です。以下の手順で導入を行いましょう。
- Docker Desktop のダウンロード
- Docker の公式サイト(https://www.docker.com)でアカウントを作成し、Windows 用のインストーラをダウンロードします。
(※オフライン環境などの場合は別途手順が必要になりますが、基本的には公式サイト経由が推奨です)
- Docker の公式サイト(https://www.docker.com)でアカウントを作成し、Windows 用のインストーラをダウンロードします。
- インストールの実行
- ダウンロードしたインストーラをダブルクリックして実行します。
- 画面の指示に従い、インストールを完了させます。
- WSL2 バックエンドの有効化(推奨)
- インストール画面で「Use the WSL 2 based engine(WSL 2 を利用)」にチェックが入っていることを確認します。
- もし有効になっていない場合は、WSL2 のインストールや有効化を行いましょう(Windows 10 以降が対象)。
- Docker Desktop の起動
- インストール完了後、Docker Desktop を起動します。
- 初回起動には多少時間がかかる場合があります。起動後、Windows の通知エリア(タスクバーの右下)にある Docker のアイコンを確認してみてください。
動作確認
インストールできたら、コマンドプロンプト(cmd)や PowerShell、または Windows ターミナルを開き、以下のコマンドを入力します。
docker version
バージョン情報が表示されれば Docker が正常にインストール・起動している証拠です。次に、サンプルとして “hello-world” イメージを使ってコンテナを起動してみましょう。
docker run hello-world
上記コマンドを実行すると、Docker Hubという様々なコンテナイメージが置いてある共有サービスから “hello-world” イメージがダウンロードされ、コンテナが立ち上がります。最後にコンテナ内でメッセージが出力されれば成功です。
DockerでPythonイメージを起動して試してみよう
docker pull python:3.9-slim
これでpythonのコンテナイメージを取得できます。いろんなpythonバージョンに対応していますが、今回は3.9とします。
コンテナの起動
取得したイメージを使ってコンテナを起動しましょう。以下の例では、対話モード(-it オプション)を使ってコンテナに入り、bash シェルを利用します。
docker run -it python:3.9-slim bash
コマンドが成功すると、コンテナ内のシェル環境に入ることができます。ここで python --version
を実行すれば、Python が正しくインストールされていることを確認できます。
パッケージをインストールしてみる
試しに、コンテナ内で Python パッケージをインストールしてみましょう。たとえば、有名な HTTP クライアントライブラリ「requests」をインストールするには
pip install requests
インストール後は、Python を起動してライブラリが正常に読み込めるか確認してみましょう。
python
>>> import requests
>>> requests.get("https://www.google.com")
エラーが出なければ、無事にライブラリがインストールされています。
コンテナ一覧の確認
一度コンテナを抜けて(exit
コマンドなどで終了)、別のターミナルで以下を実行すると、コンテナの一覧が表示されます。
docker ps -a
-a
オプションを付けると、停止しているコンテナも含めてすべて表示されます。 今回の例ではコンテナに入って exit
したので、コンテナは終了(停止)した状態として一覧に表示されるはずです。
まとめと次のステップ
Docker を使うと、開発環境から本番環境までの構築やデプロイを一貫して管理でき、チーム開発でも環境の食い違いによるトラブルを大幅に減らせます。記事では Windows を例にインストール方法や簡単なコンテナ起動手順を紹介しましたが、Docker は macOS や Linux 上でも同様に利用できます。
次のステップとしては、以下のようなトピックを学ぶとさらに理解が深まるでしょう。
- Dockerfile の書き方:自分のアプリケーション環境をイメージとして作成する方法。
- ボリュームの使い方:コンテナとホストの間でデータを保存・共有する手法。
- ネットワーク設定:複数コンテナ間で通信を行うための設定方法。
- Docker Compose:複数のコンテナで構成されるアプリケーションを一括管理する方法。
というわけで、DockerfileやDocker Composeについても知っておきたいなと思います。コンテナのネットワークについてはもう少し調べて記事にしてみたいなと思います。