Docker 入門:基本操作をマスターする方法

DockerBeginner
オンラインで実践に進む

はじめに

この包括的な Docker チュートリアルは、開発者と IT 専門家に、コンテナ技術の基本的な理解を提供します。Docker のコアコンセプト、インストール手順、そして実践的なコマンドラインテクニックを探求することで、学習者は、異なるコンピューティング環境全体でアプリケーションをパッケージ化、デプロイ、管理するための実践的なスキルを習得します。

Docker の基礎

Docker とコンテナ技術の概要

Docker は、コンテナ化のための強力なプラットフォームであり、開発者は異なるコンピューティング環境全体でアプリケーションを一貫してパッケージ化、配布、実行できます。現代のソフトウェアデプロイメントにおける重要なツールとして、Docker はアプリケーションの作成、管理、スケーリングを簡素化します。

Docker のコアコンセプト

graph TD
    A[Docker イメージ] --> B[Docker コンテナ]
    A --> C[Dockerfile]
    B --> D[コンテナランタイム]

Docker はいくつかの基本的な概念を導入します。

概念 説明
Docker イメージ アプリケーションコードと依存関係を含む読み取り専用テンプレート
Docker コンテナ イメージの実行可能なインスタンス
Dockerfile イメージビルド手順を定義するテキストファイル
Docker レジストリ イメージを保存および共有するためのリポジトリ

Ubuntu 22.04 へのインストール

## パッケージインデックスを更新
sudo apt update

## 依存関係をインストール
sudo apt install apt-transport-https ca-certificates curl software-properties-common

## Docker の公式 GPG キーを追加
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

## 安定版リポジトリを設定
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

## Docker エンジンをインストール
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

基本的な Docker コマンド

## Docker のバージョンを確認

## Docker Hub からイメージをプル

## 利用可能なイメージの一覧表示

## コンテナを実行

## 実行中のコンテナの一覧表示

## コンテナを停止

実践的な例:シンプルな Web アプリケーションの実行

## Nginx イメージをプル
docker pull nginx:latest

## Nginx コンテナを実行
docker run -d -p 8080:80 nginx:latest

## コンテナが実行されていることを確認
docker ps

この例は、Docker を使用して Web サーバーを迅速にデプロイする方法を示し、ソフトウェアデプロイにおけるそのシンプルさと効率性を示しています。

コンテナの管理

コンテナのライフサイクル操作

Docker は、コンテナのライフサイクルを効率的に制御および操作できるように、包括的なツールを提供します。

graph LR
    A[作成] --> B[実行中]
    B --> C[停止]
    C --> D[削除]
    D --> E[再起動]

コンテナ管理コマンド

コマンド 機能
docker create コンテナを作成 docker create nginx
docker start 停止したコンテナを起動 docker start <container_id>
docker stop 実行中のコンテナを停止 docker stop <container_id>
docker restart コンテナを再起動 docker restart <container_id>
docker rm コンテナを削除 docker rm <container_id>

高度なコンテナ制御

## カスタム名でコンテナを実行
docker run --name web-server -d nginx:latest

## コンテナの詳細を表示
docker inspect web-server

## コンテナのログを表示
docker logs web-server

## 実行中のコンテナ内でコマンドを実行
docker exec -it web-server /bin/bash

コンテナのリソース管理

## コンテナのCPUとメモリを制限
docker run -d --cpus=0.5 --memory=512m nginx:latest

## リソース使用状況と共に実行中のコンテナ一覧表示
docker stats

イメージ管理操作

## ローカルイメージ一覧表示
docker images

## 特定のイメージを削除
docker rmi nginx:latest

## 使用されていないイメージを削除
docker image prune

## 特定のイメージバージョンをプル
docker pull ubuntu:20.04

コンテナのネットワーク管理

## カスタムネットワークを作成
docker network create mynetwork

## 特定のネットワークでコンテナを実行
docker run --network=mynetwork nginx:latest

Docker の高度なテクニック

マルチステージビルド

マルチステージビルドは、Dockerfile の複雑さを最適化し、最終的なイメージサイズを削減します。

## ビルドステージ
FROM golang:1.17 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

## プロダクションステージ
FROM alpine:latest
COPY --from=builder /app/myapp /usr/local/bin/
CMD ["myapp"]

Docker Compose ワークフロー

graph LR
    A[Docker Compose ファイル] --> B[サービス定義]
    B --> C[コンテナオーケストレーション]
    C --> D[ネットワーク化されたアプリケーション]

Compose 設定例

version: "3"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  database:
    image: postgres:12
    environment:
      POSTGRES_PASSWORD: secret

パフォーマンス最適化テクニック

テクニック 説明
レイヤーキャッシュ レイヤーの再構築を最小限にする
.dockerignore 不要なファイルを除外する
Alpine イメージ 最小限のベースイメージを使用する

高度なネットワーク

## カスタムブリッジネットワークを作成
docker network create --driver bridge isolated_network

## 特定のネットワークにコンテナを接続
docker run --network=isolated_network nginx:latest

ボリューム管理戦略

## 名前付きボリュームを作成
docker volume create app-data

## コンテナにボリュームをマウント
docker run -v app-data:/var/lib/data nginx:latest

コンテナ監視

## リアルタイムコンテナメトリクス

## コンテナログの確認

セキュリティのベストプラクティス

## 非ルートユーザーとしてコンテナを実行
docker run --user 1000 nginx:latest

## 読み取り専用ファイルシステムを設定
docker run --read-only nginx:latest

まとめ

Docker は、コンテナ化による一貫性と効率的なソフトウェアデプロイメントプラットフォームを提供することで、ソフトウェア開発を革新しています。このチュートリアルを通して、読者は Docker イメージ、コンテナ、Dockerfile の基本的な概念を学び、Docker のインストール、コンテナの管理、Web アプリケーションの実行といった実践的なスキルを習得しました。これらのスキルは、現代のソフトウェア開発とインフラストラクチャ管理にとって重要な基盤となります。