#5.Dockerとは何か? 仮想マシンやコンテナの概念と具体的な操作についてわかりやすく解説!

IT技術
この記事は約9分で読めます。

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の場合

  1. Docker公式サイト(https://www.docker.com/から「Docker Desktop for Windows」をダウンロードします。
  2. インストーラーを実行し、指示に従ってインストールを完了します。
  3. インストール後、Docker Desktopを起動し、初期設定を行います。

2.1.2 macOSの場合

  1. Docker公式サイトから「Docker Desktop for Mac」をダウンロードします。
  2. ダウンロードしたファイルを開き、アプリケーションフォルダにドラッグ&ドロップします。
  3. 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の作成

  1. 新しいディレクトリを作成し、その中にDockerfileを作成します。
mkdir my-docker-app
cd my-docker-app
touch Dockerfile
  1. 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の知識と技術を駆使して、開発プロセスをさらに最適化しましょう。