Overview
Docker 環境を構築します。本稿では、Docker の環境構築について説明しており、docker
コマンド等を使用した具体的な操作はこちらの記事を参照してください。
前提条件
- こちらを参考に基本設定が完了していること。
インストール
Docker をインストールします。
myadmin@ubuntu-22-04:~$ 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 コマンドを実行します。これは、ログインし直すことで有効になります。
myadmin@ubuntu-22-04:~$ sudo usermod -aG docker myadmin
/etc/docker/daemon.json
この設定はオプションです。
Docker は、明示的な指定がなければ、172.*.*.*/16 の範囲でコンテナ用のネットワークを自動的に設定します。この自動割り当てはネットワークの重複を考慮しないため、一定規模のネットワーク環境では問題になる可能性があります。具体的には、基本的に Docker のネットワークは外部に公開されず、SNAT/DNAT を使用して外部との通信を行いますが、完全な隠蔽ではないため、Docker ネットワークと重複したネットワークが外部に存在する場合、そのネットワークとの通信は成り立ちません。
以下のように /etc/docker/daemon.json を設定することで、デフォルトの Docker ネットワークを明示的に指定することが可能です。
myadmin@ubuntu-22-04:~$ 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
ディレクトリを作成します。
myadmin@ubuntu-22-04:~$ sudo mkdir /etc/docker/certs.d
証明書を配置します。拡張子を .cert
に変更する必要があります。
myadmin@ubuntu-22-04:~$ sudo cp /etc/my-ssl/certs/si1230.com.crt /etc/docker/certs.d/si1230.com.cert
秘密鍵を配置します。パーミッションは 600 を指定します。
myadmin@ubuntu-22-04:~$ sudo cp /etc/my-ssl/certs/si1230.com.key /etc/docker/certs.d
myadmin@ubuntu-22-04:~$ sudo chmod 600 /etc/docker/certs.d/si1230.com.key
設定の有効化
設定を有効化します。
myadmin@ubuntu-22-04:~$ sudo systemctl restart docker.service
myadmin@ubuntu-22-04:~$ systemctl status docker.service