Ubuntu で Docker コンテナ管理をマスターする方法

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

はじめに

この包括的な Docker チュートリアルは、開発者とシステム管理者向けに、Docker コンテナ技術を理解し実装するための詳細なガイドを提供します。コアコンセプト、アーキテクチャ、そして実践的な実装戦略を探求することで、学習者は現代のソフトウェア開発およびデプロイ環境に必要なスキルを習得します。

Docker の基礎

Docker の基礎概要

Docker は、ソフトウェアのコンテナ化を革新する強力なコンテナ技術プラットフォームです。開発者は、アプリケーションとその依存関係をすべてパッケージ化することで、さまざまなコンピューティング環境で一貫したパフォーマンスを確保できます。

Docker のコアコンセプト

Docker とは何か?

Docker は、コンテナ化を使用してアプリケーションのデプロイと管理を簡素化するオープンソースプラットフォームです。従来の仮想マシンとは異なり、Docker コンテナはホストシステムのカーネルを共有するため、軽量かつ効率的です。

graph TD
    A[アプリケーションコード] --> B[Docker コンテナ]
    B --> C[ホストオペレーティングシステム]
    C --> D[ハードウェア]

Docker の主要コンポーネント

コンポーネント 説明 役割
Docker エンジン コアランタイム コンテナのライフサイクルを管理
Docker イメージ 軽量テンプレート コンテナの設定を定義
Docker コンテナ 実行可能なインスタンス アプリケーションを実行

Docker のアーキテクチャ

Docker は、いくつかの主要コンポーネントを持つクライアント - サーバーアーキテクチャを使用します。

  • Docker デーモン:Docker オブジェクトを管理
  • Docker クライアント:Docker デーモンにコマンドを送信
  • Docker レジストリ:Docker イメージを保存

基本的な Docker コマンド

Ubuntu 22.04 の Docker コマンドの例:

## Docker のインストール
sudo apt-get update
sudo apt-get install docker.io

## Docker のバージョンを確認
docker --version

## Ubuntu イメージのプル
docker pull ubuntu:22.04

## コンテナの実行
docker run -it ubuntu:22.04 /bin/bash

## 実行中のコンテナのリスト表示
docker ps

## コンテナの停止
docker stop [container_id]

Docker コンテナ化の利点

  • 一貫した開発環境
  • より高速なデプロイ
  • リソース効率
  • スケーラビリティの向上
  • 依存関係管理の簡素化

Docker 環境設定

Docker インストールのための Ubuntu 22.04 の準備

Docker は互換性のある Linux 環境が必要です。Ubuntu 22.04 は、コンテナデプロイのための優れたプラットフォームであり、インストール手順も簡潔です。

システム要件

インストールの前に、Ubuntu システムが以下の前提条件を満たしていることを確認してください。

要件 仕様
OS Ubuntu 22.04 LTS
アーキテクチャ 64 ビット
カーネル 5.4 以降
RAM 最低 2GB

Docker インストール方法

graph TD
    A[Docker のインストール] --> B[リポジトリ方法]
    A --> C[パッケージ方法]
    A --> D[スクリプト方法]

リポジトリインストール手順

## 既存のパッケージを更新
sudo apt-get update

## 必要な依存関係をインストール
sudo apt-get install ca-certificates curl gnupg lsb-release

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

## 安定版リポジトリを設定
echo "deb [arch=$(dpkg --print-architecture) 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-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

Docker インストールの検証

## Docker のバージョンを確認
docker --version

## Docker が実行されていることを確認
sudo systemctl status docker

## Docker インストールのテスト
sudo docker run hello-world

インストール後の設定

## 現在のユーザーを docker グループに追加
sudo usermod -aG docker $USER

## Docker サービスを再起動
sudo systemctl restart docker

Docker Compose のインストール

## Docker Compose をダウンロード
sudo curl -L " -s)-$(uname -m)" -o /usr/local/bin/docker-compose

## 実行権限を適用
sudo chmod +x /usr/local/bin/docker-compose

## インストールを検証
docker-compose --version

Docker イメージ管理

Docker イメージについて

Docker イメージは、アプリケーションを実行するために必要なすべてのものを含む軽量で独立した実行可能パッケージです。コンテナを作成するための設計図として機能します。

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

イメージ管理コマンド

コマンド 機能
docker images ローカルイメージのリスト表示
docker pull イメージのダウンロード
docker push イメージのアップロード
docker rmi イメージの削除

Dockerfile の作成

## ベースイメージの選択
FROM ubuntu:22.04

## メタデータ
LABEL maintainer="developer@example.com"

## システムアップデート
RUN apt-get update && apt-get upgrade -y

## 依存関係のインストール
RUN apt-get install -y python3 python3-pip

## 作業ディレクトリの設定
WORKDIR /app

## アプリケーションファイルのコピー
COPY . /app

## アプリケーション依存関係のインストール
RUN pip3 install -r requirements.txt

## アプリケーションポートの公開
EXPOSE 8000

## 起動コマンドの定義
CMD ["python3", "app.py"]

Docker イメージのビルド

## Dockerfile からイメージをビルド
docker build -t myapp:v1 .

## ローカルイメージのリスト表示
docker images

## 既存イメージのタグ付け
docker tag myapp:v1 myregistry/myapp:latest

イメージ管理ワークフロー

graph LR
    A[コード開発] --> B[Dockerfile 作成]
    B --> C[イメージビルド]
    C --> D[コンテナテスト]
    D --> E[レジストリへのプッシュ]
    E --> F[コンテナデプロイ]

高度なイメージ操作

## イメージを tar アーカイブにエクスポート
docker save -o myimage.tar myimage:v1

## tar アーカイブからイメージをインポート
docker load -i myimage.tar

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

Docker レジストリとの連携

## Docker Hub にログイン
docker login

## レジストリにイメージをプッシュ
docker push myusername/myimage:tag

## レジストリからイメージをプル
docker pull myusername/myimage:tag

まとめ

Docker は、ソフトウェアのコンテナ化に革命的なアプローチを提供する強力なプラットフォームです。開発者は、Docker を活用することで、一貫性があり、効率的で、スケーラブルなアプリケーション環境を構築できます。Docker の主要なコンポーネント、アーキテクチャ、コマンドを習得することで、開発ワークフローを効率化し、リソース管理を改善し、さまざまなコンピューティングプラットフォーム間で柔軟なソフトウェアデプロイを実現できます。