Ubuntu に Docker コンテナをインストールして実行する方法

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

はじめに

この包括的な Docker チュートリアルは、開発者とシステム管理者に、コンテナ技術を実装するための必須知識を提供します。基本的な Docker の概念、インストール手順、実践的な例を通して、学習者は最新のソフトウェアデプロイメントと仮想化技術の実用的なスキルを習得します。

Docker の基礎

Docker の基本概念の紹介

Docker は、ソフトウェアのデプロイとアプリケーションの仮想化を革新する強力なコンテナ技術です。開発者は、アプリケーションとその依存関係をすべて、コンテナと呼ばれる標準化された単位にパッケージ化できます。

コンテナ技術の核心概念

graph LR
    A[Docker イメージ] --> B[コンテナ]
    B --> C[アプリケーションのデプロイ]
    B --> D[隔離]
概念 説明
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=$(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 update
sudo apt install docker-ce docker-ce-cli containerd.io

最初の Docker コンテナの例

## Ubuntu イメージをプル
docker pull ubuntu:latest

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

## コンテナ内
apt update
apt install nginx -y
exit

Docker 環境設定

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

graph LR
    A[システム更新] --> B[依存関係のインストール]
    B --> C[Docker リポジトリの設定]
    C --> D[Docker エンジンのインストール]
    D --> E[Docker の設定]

システム要件

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

包括的な Docker インストールスクリプト

## システムパッケージを更新
sudo apt update && sudo apt upgrade -y

## 衝突するパッケージを削除
sudo apt remove docker docker-engine docker.io containerd runc

## 必要な依存関係をインストール
sudo apt install -y apt-transport-https 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 update
sudo apt install -y docker-ce docker-ce-cli containerd.io

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

インストール後の設定

## docker ユーザーグループを作成
sudo groupadd docker

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

## Docker サービスを有効化
sudo systemctl enable docker.service
sudo systemctl start docker.service

## Docker の機能を確認
docker run hello-world

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

コンテナの管理

コンテナのライフサイクルの概要

graph LR
    A[イメージのプル] --> B[コンテナの作成]
    B --> C[コンテナの起動]
    C --> D[コンテナの実行中]
    D --> E[コンテナの停止]
    E --> F[コンテナの削除]

基本的な Docker コンテナのコマンド

コマンド 機能
docker run コンテナの作成と起動
docker ps 実行中のコンテナのリスト表示
docker stop 実行中のコンテナの停止
docker rm コンテナの削除
docker exec コンテナ内でコマンドの実行

コンテナの作成と管理

## Ubuntu イメージをプル
docker pull ubuntu:latest

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

## 全てのコンテナをリスト表示
docker ps -a

## 停止したコンテナを起動
docker start my-ubuntu

## 実行中のコンテナを停止
docker stop my-ubuntu

## コンテナを削除
docker rm my-ubuntu

高度なコンテナ操作

## バックグラウンドでコンテナを実行
docker run -d --name nginx-server nginx:latest

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

## コンテナの詳細情報を取得
docker inspect nginx-server

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

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

コンテナのリソース管理

## コンテナのリソースを制限
docker run -d \
  --name limited-container \
  --cpus="1" \
  --memory="512m" \
  nginx:latest

## コンテナのリソース使用状況を監視
docker stats

コンテナのネットワーク設定

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

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

まとめ

Docker は、ソフトウェアのデプロイメントに革新的なアプローチを提供する技術です。軽量で移植可能なコンテナにより、アプリケーション開発とインフラストラクチャ管理を効率化します。Docker の基本原理、インストール手順、コンテナ管理技術を習得することで、プロフェッショナルは、多様なコンピューティング環境においてソフトウェア開発およびデプロイメント能力を大幅に向上させることができます。