Docker Engine の位置づけ
Docker 環境を構築します。本稿では、Docker の環境構築について説明しており、docker コマンド等を使用した具体的な操作はこちらの記事を参照してください。
この記事の位置づけ
Ubuntu 22.04 に Docker Engine を導入する記事です。コンテナ実行環境の入口として、Docker の基本操作や volume、外部公開の前提を作ります。
前提条件
- こちらを参考に基本設定が完了していること。
この記事では Ubuntu 標準リポジトリの docker.io を使います。Docker 公式リポジトリの最新版を追う構成とは異なるため、バージョン固定や商用サポート要件がある場合は導入元を分けて考えます。
インストール
Docker をインストールします。
sudo apt -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install docker.io docker-buildx docker-composedocker.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 アソシエイトリンクです。



