初めての Docker コンテナの実行方法

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

はじめに

Docker は、コンテナ化技術を通じてソフトウェア開発とデプロイを革新する強力なプラットフォームです。このチュートリアルは、開発者と IT 専門家が Docker の基本を理解し、最初のコンテナを実行して、異なるシステム間で効率的で一貫したアプリケーション環境を実現するための包括的なガイドを提供します。

Docker の基礎

Docker とは何か?

Docker は、コンテナ化技術を通じてアプリケーションのデプロイ、スケーリング、管理を自動化するオープンソースプラットフォームです。軽量で移植性があり、アプリケーション実行に必要な環境を自己完結的に提供します。

核心概念

コンテナ

コンテナは、アプリケーションを実行するために必要なすべて(コード、ランタイム、システムツール、ライブラリ、設定)を含む、軽量で独立した実行可能パッケージです。

graph LR A[アプリケーションコード] --> B[コンテナ] C[依存関係] --> B D[ランタイム環境] --> B

Docker イメージ

Docker イメージは、コンテナを作成するために使用される読み取り専用のテンプレートです。コンテナ作成の基盤となり、Docker Hub などのレジストリに保存できます。

Docker アーキテクチャ

コンポーネント 説明
Docker クライアント Docker と対話するためのコマンドラインインターフェース
Docker デーモン Docker オブジェクトを管理するバックグラウンドサービス
Docker レジストリ Docker イメージの保存と配布システム

主要な利点

  1. 一貫性: 開発環境と本番環境で同一の環境を保証します。
  2. 分離性: アプリケーションとその依存関係を分離します。
  3. 効率性: 従来の仮想マシンと比べて軽量です。
  4. スケーラビリティ: アプリケーションを水平方向に簡単にスケールできます。

使用例

  • マイクロサービスのデプロイ
  • CI/CD (継続的インテグレーション/継続的デリバリー)
  • クラウドネイティブアプリケーション開発
  • 開発・テスト環境

LabEx での開始

Docker を実践的に学ぶために、LabEx はコンテナ化技術を習得するためのインタラクティブな環境を提供します。

Docker と従来の仮想化

graph TD A[従来の仮想化] --> B[各アプリケーション毎に完全なOS] A --> C[高いリソースオーバーヘッド] D[Docker コンテナ化] --> E[共有OSカーネル] D --> F[軽量なコンテナ]

これらの基礎を理解することで、Docker の強力なコンテナ化機能を活用できるようになります。

設定と構成

システム要件

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

  • 64 ビットオペレーティングシステム
  • Linux カーネル 3.10 以上
  • RAM 2GB 以上
  • 十分なディスク容量

インストール方法

方法 1: 公式 Docker リポジトリ

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

## 必要パッケージをインストール
sudo apt-get install ca-certificates curl gnupg lsb-release

## Docker の公式 GPG キーを追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | 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] https://download.docker.com/linux/ubuntu \
  $(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

方法 2: 簡便スクリプト

## Docker インストールスクリプトをダウンロードして実行
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

インストール後の設定

ユーザーグループ設定

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

## インストールを確認
docker --version

Docker 設定ファイル

ファイルパス 目的
/etc/docker/daemon.json Docker デーモンの設定ファイル
~/.docker/config.json ユーザー固有の Docker 設定ファイル

Docker Compose のインストール

## Docker Compose をダウンロード
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

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

## インストールを確認
docker-compose --version

検証フロー

graph TD A[Docker のインストール] --> B[ユーザーを Docker グループに追加] B --> C[Docker バージョンを確認] C --> D[テストコンテナを実行] D --> E[設定完了を確認]

Docker インストールのテスト

## hello-world コンテナを実行
sudo docker run hello-world

LabEx の推奨事項

包括的な Docker 学習と実践的な練習のために、LabEx は実践的な Docker 設定とユースケースをガイドするインタラクティブな環境を提供しています。

よくあるトラブルシューティング

  • Docker サービスを再起動:sudo systemctl restart docker
  • Docker のステータスを確認:sudo systemctl status docker
  • ネットワーク接続を確認:docker info

最初のコンテナの実行

基本的な Docker コマンド

イメージのプル

## Docker Hub から Ubuntu イメージをプル
docker pull ubuntu:latest

コンテナライフサイクルコマンド

コマンド 説明
docker run 新しいコンテナを作成して起動
docker ps 実行中のコンテナ一覧
docker ps -a 全てのコンテナ一覧
docker start 停止したコンテナを起動
docker stop 実行中のコンテナを停止

対話型コンテナの実行

## 対話型で Ubuntu コンテナを実行
docker run -it ubuntu:latest /bin/bash

コンテナモード

graph LR A[コンテナモード] --> B[対話型モード] A --> C[非対話型モード] A --> D[フォアグラウンドモード] A --> E[バックグラウンドモード]

非対話型モードの例

## バックグラウンドで Nginx Web サーバーを実行
docker run -d -p 80:80 nginx:latest

ポートマッピング

## コンテナポートをホストポートにマッピング
docker run -d -p 8080:80 nginx:latest

ボリュームマウント

## ホストディレクトリをコンテナにマウント
docker run -v /host/path:/container/path ubuntu:latest

環境変数

## 環境変数を設定
docker run -e MYSQL_ROOT_PASSWORD=secret mysql:latest

コンテナの管理

## コンテナを削除
docker rm container_name

## 停止した全てのコンテナを削除
docker container prune

高度なコンテナ操作

コンテナの検査

## コンテナの詳細を表示
docker inspect container_name

## コンテナのログを確認
docker logs container_name

最善の慣行

  1. 公式イメージを使用する
  2. コンテナを軽量に保つ
  3. 特定のイメージタグを使用する
  4. 適切なリソース制限を実装する

LabEx 学習推奨事項

LabEx は、実践的なコンテナスキルを習得するための包括的な Docker コンテナ管理チュートリアルを提供しています。

コンテナワークフロー

graph TD A[イメージのプル] --> B[コンテナの作成] B --> C[コンテナの起動] C --> D[コンテナの操作/使用] D --> E[コンテナの停止] E --> F[コンテナの削除]

よくあるシナリオ

シナリオ Docker コマンド
Web サーバー docker run -d -p 80:80 nginx
データベース docker run -d mysql:latest
Python アプリケーション docker run -it python:3.9

トラブルシューティングのヒント

  • コンテナのステータスを確認:docker ps
  • コンテナのログを表示:docker logs
  • コンテナを再起動:docker restart

まとめ

このチュートリアルに従うことで、Docker のセットアップ、環境設定、最初のコンテナの実行に必要な手順を習得しました。Docker は、アプリケーションのパッケージ化、配布、デプロイのための強力なソリューションを提供し、開発者は最小限の設定で、さまざまなコンピューティング環境間で最大限の一貫性を保ちながら、ポータブルでスケーラブルなソフトウェアソリューションを作成できます。