1. Dockerの基本概念
1.1 Dockerとは
Dockerは、ソフトウェアをコンテナと呼ばれる単位でパッケージ化し、効率的かつ一貫性のある環境で実行するためのプラットフォームです。開発者はDockerを使用して、アプリケーションとその依存関係をコンテナにまとめ、どこでも動作することを保証できます。
1.2 仮想マシンとコンテナの違い
Dockerのコンテナは、仮想マシン(VM)と似た概念ですが、いくつかの重要な違いがあります。
- 仮想マシン
- ホストOSの上にハイパーバイザーが動作し、その上に各VMが動作します。
- 各VMは独自のOSを持ち、完全に分離されています。
- VMはリソースのオーバーヘッドが大きく、起動時間も長いです。
- コンテナ
- ホストOSの上にDockerエンジンが動作し、その上に各コンテナが動作します。
- コンテナはホストOSのカーネルを共有し、軽量で迅速に起動します。
- コンテナはプロセスとして分離され、必要なリソースのみを使用します。
1.3 Dockerの主要なコンポーネント
- Dockerイメージ
コンテナの実行可能なパッケージであり、アプリケーションとその依存関係を含んでいます。 - Dockerコンテナ
イメージから作成された実行中または停止中のインスタンスです。 - Dockerレジストリ
Dockerイメージを保存し、共有するためのリポジトリです。Docker Hubが最も一般的です。
2. Dockerのインストールと初期設定
2.1 Dockerのインストール
Dockerは主要なOS(Windows、macOS、Linux)で利用可能です。
以下に各OSでのインストール手順を示します。
2.1.1 Windowsの場合
- Docker公式サイト(https://www.docker.com/)から「Docker Desktop for Windows」をダウンロードします。
- インストーラーを実行し、指示に従ってインストールを完了します。
- インストール後、Docker Desktopを起動し、初期設定を行います。
2.1.2 macOSの場合
- Docker公式サイトから「Docker Desktop for Mac」をダウンロードします。
- ダウンロードしたファイルを開き、アプリケーションフォルダにドラッグ&ドロップします。
- Docker Desktopを起動し、初期設定を行います。
2.1.3 Linuxの場合
Linuxでは、ディストリビューションごとに異なるインストール手順があります。
以下はUbuntuの場合の手順です。
1.既存の古いバージョンを削除します(もしインストール済みの場合)。
sudo apt-get remove docker docker-engine docker.io containerd runc
2.必要なパッケージをインストールします。
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
3.Dockerの公式GPGキーを追加します。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4.Dockerのリポジトリを追加します。
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5.Dockerをインストールします。
bashコードをコピーするsudo apt-get update
sudo apt-get install docker-ce
6.インストールを確認します。
sudo systemctl status docker
2.2 初期設定
Dockerをインストールした後、いくつかの初期設定を行います。
2.2.1 Dockerグループにユーザーを追加
Linuxの場合、docker
コマンドを使用するためにsudo
を使う必要がありますが、ユーザーをdocker
グループに追加することでこれを避けられます。
sudo usermod -aG docker $USER
この変更を反映するために、一度ログアウトしてから再度ログインします。
2.2.2 Dockerの動作確認
以下のコマンドを実行し、Dockerが正しくインストールされているか確認します。
docker --version
docker run hello-world
hello-world
イメージが正常に実行されると、Dockerが正しくインストールされ、動作していることが確認できます。
3. Dockerの基本操作
3.1 Dockerイメージの取得
Dockerイメージは、Docker Hubなどのレジストリから取得できます。
docker pull イメージ名
例えば、公式のUbuntuイメージを取得する場合
docker pull ubuntu
3.2 Dockerコンテナの作成と実行
Dockerコンテナを作成して実行するためには、以下のコマンドを使用します。
docker run -it --name コンテナ名 イメージ名
例えば、Ubuntuコンテナを作成して実行する場合。
docker run -it --name my-ubuntu-container ubuntu
このコマンドは以下の動作を行います。
-it
インタラクティブモードでターミナルを開く。--name
コンテナに名前を付ける。ubuntu
使用するイメージ名。
3.3 コンテナの操作
3.3.1 実行中のコンテナを確認
docker ps
3.3.2 停止中のコンテナを含めて確認
docker ps -a
3.3.3 コンテナの停止
docker stop コンテナIDまたは名前
3.3.4 コンテナの再起動
docker start コンテナIDまたは名前
3.3.5 コンテナの削除
docker rm コンテナIDまたは名前
3.4 イメージの操作
3.4.1 ローカルのイメージを確認
docker images
3.4.2 イメージの削除
docker rmi イメージIDまたは名前
4. Dockerfileを使用したカスタムイメージの作成
Dockerfileを使用すると、カスタムDockerイメージを作成できます。以下に簡単な例を示します。
4.1 Dockerfileの作成
- 新しいディレクトリを作成し、その中に
Dockerfile
を作成します。
mkdir my-docker-app
cd my-docker-app
touch Dockerfile
Dockerfile
に以下の内容を追加します。
# ベースイメージを指定
FROM ubuntu:latest
# メンテナ情報を指定
MAINTAINER Your Name <your.email@example.com>
# 必要なパッケージをインストール
RUN apt-get update && apt-get install -y \
python3 \
python3-pip
# 作業ディレクトリを指定
WORKDIR /app
# アプリケーションコードをコピー
COPY . /app
# アプリケーションを実行
CMD ["python3", "app.py"]
4.2 カスタムイメージのビルド
以下のコマンドを実行して、Dockerfileからカスタムイメージをビルドします。
docker build -t my-docker-app .
4.3 カスタムイメージの実行
ビルドしたイメージを使用してコンテナを実行します。
docker run -it my-docker-app
5. Docker Composeを使用したマルチコンテナ環境の管理
Docker Composeを使用すると、複数のコンテナを定義し、管理することが容易になります。
5.1 Docker Composeのインストール
Docker Composeは通常、Docker Desktopに同梱されていますが、Linuxの場合は以下のコマンドでインストールできます。
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
5.2 docker-compose.ymlの作成
新しいディレクトリを作成し、その中にdocker-compose.yml
を作成します。
mkdir my-compose-app
cd my-compose-app
touch docker-compose.yml
docker-compose.yml
に以下の内容を追加します。
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
app:
build: .
volumes:
- .:/app
links:
- db
db:
image: postgres
environment:
POSTGRES_PASSWORD: example
5.3 Docker Composeの操作
5.3.1 コンテナの起動
docker-compose up
5.3.2 コンテナのバックグラウンド実行
docker-compose up -d
5.3.3 コンテナの停止
docker-compose down
6. まとめ
Dockerは、アプリケーションの開発、デプロイ、管理を効率化するための強力なツールです。仮想マシンとコンテナの違いを理解し、Dockerの基本操作を習得することで、アプリケーションをより一貫性のある環境で実行することができます。DockerfileやDocker Composeを活用することで、カスタムイメージの作成やマルチコンテナ環境の管理も容易になります。Dockerの知識と技術を駆使して、開発プロセスをさらに最適化しましょう。