目次
1. Dockerとは何なのか
Dockerの概要
Dockerは、アプリケーションを動かすための環境を「コンテナ」としてまとめて、どこでも同じように動かせるツールです。
なぜDockerを使うのか?
- 環境の統一:開発環境と本番環境の違いをなくし、「動作しない」問題を解決。
- ポータビリティ:どのOSでも同じ環境を再現できる。
- スケーラビリティ:マイクロサービスアーキテクチャに適している。
- 高速なデプロイ:コンテナ化されたアプリケーションはすぐに立ち上げ可能。
- 軽量:仮想マシン(VM)と比較してリソース消費が少なく、起動が速い。
- 依存関係の管理:各コンテナが独立しているため、システム間の競合が発生しにくい。
Dockerの主要概念
- イメージ(Image):コンテナの元となる設計図。
- コンテナ(Container):イメージから作成される実行可能な環境。
- Dockerfile:イメージを作成するための設定ファイル。
- レジストリ(Registry):Dockerイメージを保存・共有する場所(例:Docker Hub)。
Dockerのデメリット
-
理解が難しい:Dockerのコンセプトを理解するには時間がかかり、初心者には少し難しい
-
パフォーマンス:仮想マシンより軽量だが、少しパフォーマンスが低下する
-
一部のアプリケーションには向かない:GUIアプリケーションやハードウェアへの直接アクセスが必要なアプリケーション(例:グラフィック処理アプリ)には向かない
-
オーケストレーションの複雑さ:複数のコンテナを扱う場合、Kubernetesなどを使う必要があり、初心者にとってハードルが高い
2. 実際にDockerを使ってみよう
事前準備
1. Docker Desktopのインストール
公式サイト からインストール可能
2. Visual Studio Code (VSCode)のインストール
公式サイト からインストール可能
3. test.py
の作成
test.py
print("hello docker")
手順①(docker build→docker run)
1. Dockerfile
を作成
以下の内容で Dockerfile
を作成します。
FROM python:3.9-slim
WORKDIR /app
COPY . /app
CMD ["python", "test.py"]
2. Dockerイメージをビルド
DockerDesltopを立ち上げ、Dockerイメージを作成します。
docker build -t test .
3. コンテナを実行
作成したイメージを使ってコンテナを実行します。
docker run test
4. 実行結果
コンテナが起動し、以下の出力が表示されます。
hello docker
手順②(docker compose)
1. docker-compose.yml
を作成
以下の内容で docker-compose.yml
を作成します。
version: '3.8'
services:
python-service:
image: python:3.9-slim
volumes:
- .:/app
working_dir: /app
command: |
bash -c "
python test.py"
2. Dockerイメージをビルドしてコンテナを起動
DockerDesltopを立ち上げ、下記コマンドを実行
docker-compose up
3. 実行結果
コンテナが起動し、以下の出力が表示されます。
hello docker
手順①と手順②の違い
項目 |
docker build → docker run
|
docker compose |
---|---|---|
使用するファイル | Dockerfile |
docker-compose.yml |
実行手順 |
docker build → docker run
|
docker-compose up |
主な用途 | 単一のコンテナの実行 | 複数コンテナやサービスの管理 |
作られたイメージやコンテナの操作
イメージの確認
下記コマンドをターミナルで実行
docker images
コンテナの確認
下記コマンドをターミナルで実行
docker ps -a
イメージの削除
下記コマンドをターミナルで実行
docker rmi <imageID>
イメージの削除
下記コマンドをターミナルで実行
docker rm <CONTAINER ID>
不要なリソースを自動的に削除する
対象のリソース
- 未使用のコンテナ:停止しているコンテナ
- 未使用のネットワーク:現在使われていないネットワーク
- 未使用のボリューム:コンテナに関連付けられていないボリューム
- 未使用のイメージ:タグが付けられていない、または参照されていないイメージ
下記コマンドをターミナルで実行
docker prune
まとめ
- Dockerはアプリケーションを「コンテナ」としてまとめ、どこでも同じ環境で動かすツール。
- Dockerを使うことで、開発環境と本番環境の違いをなくし、環境の再現性が向上する。
- 複数のサービスやコンテナを簡単に管理でき、マイクロサービスアーキテクチャにも適している。
- コンテナは軽量で高速、依存関係を管理しやすい。
- 単一コンテナの場合
docker build
でイメージを作成、docker run
でコンテナを起動。 - 複数のコンテナを扱う場合、
docker-compose
を使用すると便利。 - Dockerは仮想マシンより軽量だが、パフォーマンスが少し低下することがある。
おすすめ書籍
