手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 Docker Engine の導入 – Ubuntu 標準パッケージでコンテナ実行環境を構築する

Docker Engine の位置づけ

Docker 環境を構築します。本稿では、Docker の環境構築について説明しており、docker コマンド等を使用した具体的な操作はこちらの記事を参照してください。

この記事の位置づけ

Ubuntu 22.04 に Docker Engine を導入する記事です。コンテナ実行環境の入口として、Docker の基本操作や volume、外部公開の前提を作ります。

前提条件

  • こちらを参考に基本設定が完了していること。
Docker 公式リポジトリとの違い

この記事では Ubuntu 標準リポジトリの docker.io を使います。Docker 公式リポジトリの最新版を追う構成とは異なるため、バージョン固定や商用サポート要件がある場合は導入元を分けて考えます。

インストール

Docker をインストールします。

sudo apt -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install docker.io docker-buildx docker-compose
  • docker.io: Docker は、アプリケーションをコンテナとして実行するためのオープンソースのプラットフォームです。コンテナは、アプリケーションとその依存関係をパッケージ化し、一貫した環境で動作させることができます。docker.io はこの Docker の公式パッケージであり、Docker エンジンをインストールします。
  • docker-buildx: Docker Buildx は、Docker のビルドツールである BuildKit を利用した新しいビルドコマンドラインプラグインです。docker build コマンドの機能を拡張し、マルチプラットフォームイメージのビルドやキャッシュの利用、並行ビルドなどの高度な機能を提供します。
  • docker-compose: Docker Compose は、複数の Docker コンテナで構成されるアプリケーションを定義して実行するためのツールです。YAML ファイルを使用して、アプリケーションのサービス、ネットワーク、ボリュームを設定し、一括して管理・実行します。

docker グループにユーザーを追加

root 以外のユーザーが docker コマンドを使用する場合、docker グループに当該ユーザーを追加する必要があります。以下のように usermod コマンドを実行します。これは、ログインし直すことで有効になります。

sudo usermod -aG docker myadmin

/etc/docker/daemon.json

この設定はオプションです。

Docker は、明示的な指定がなければ、172.*.*.*/16 の範囲でコンテナ用のネットワークを自動的に設定します。この自動割り当てはネットワークの重複を考慮しないため、一定規模のネットワーク環境では問題になる可能性があります。具体的には、基本的に Docker のネットワークは外部に公開されず、SNAT/DNAT を使用して外部との通信を行いますが、完全な隠蔽ではないため、Docker ネットワークと重複したネットワークが外部に存在する場合、そのネットワークとの通信は成り立ちません。

以下のように /etc/docker/daemon.json を設定することで、デフォルトの Docker ネットワークを明示的に指定することが可能です。

sudo tee /etc/docker/daemon.json <<"EOF"
{
    "bip": "10.32.0.1/24",
    "ipv6": true,
    "fixed-cidr-v6": "fd00::a20:0/120"
}
EOF
  • "bip": "10.32.0.1/24": bip (Bridge IP) は、Docker のデフォルトのブリッジネットワークの IP アドレスを指定します。
  • "ipv6": true: Docker デーモンで IPv6 を有効にします。
  • "fixed-cidr-v6": "fd00::a20:0/120": Docker の IPv6 ネットワークアドレスを指定します。

TLS 設定

この設定はオプションです。

Docker デーモンの TLS (Transport Layer Security) 設定を行い、Docker 通信のセキュリティを強化します。TLS を使用することで、Docker クライアントとデーモン間の通信を暗号化し、セキュアな接続を確立します。通常、Docker は UNIX ソケットを介してローカルホスト上で操作することが多いですが、この設定は、Docker デーモンを TCP ソケットを介してリモートから操作する場合に有効です。また、一部のコンテナアプリケーションは TCP ソケットを必要とする場合があります。

/etc/docker/certs.d ディレクトリを作成します。

sudo mkdir /etc/docker/certs.d

証明書を配置します。拡張子を .cert に変更する必要があります。

sudo cp /etc/my-ssl/certs/si1230.com.crt /etc/docker/certs.d/si1230.com.cert

秘密鍵を配置します。パーミッションは 600 を指定します。

sudo cp /etc/my-ssl/certs/si1230.com.key /etc/docker/certs.d
sudo chmod 600 /etc/docker/certs.d/si1230.com.key

導入後に確認すること

Docker を入れた後は、サービスの起動状態、一般ユーザーでの実行可否、ネットワークアドレスの重複、ログドライバ、再起動後の自動起動を確認します。特に自宅検証環境や複数ネットワークを持つ環境では、Docker の bridge ネットワークが既存のアドレス設計と重複しないことが重要です。

設定の有効化

設定を有効化します。

sudo systemctl restart docker.service
systemctl status docker.service

参考書籍

参考書籍
参考書籍

Advanced Ubuntu Administration and Management Best Practices

Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

Ubuntu 22.04 Docker Engine の導入 – Ubuntu 標準パッケージでコンテナ実行環境を構築する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る