ローカル環境にプールしたDockerイメージからコンテナを起動する仕組みを構築

gahag-0079139294 Virtual Infrastructure

Dockerのコンテナイメージをプールするレジストリサーバと、プールされたイメージからコンテナを起動するホストサーバを構築します。ローカル環境用にカスタマイズしたイメージをプールしておくことで、検証(開発)環境のスクラップ&ビルドが簡単に行えるようになります。

※ここでは実際に設定、動作したものを掲載していますが、内容について保証するものではありません。流用される場合は各自の責任でお願いします。

要件は以下のとおりです。

  • ローカル環境用にカスタマイズしたイメージをプールするためのレジストリサーバを構築する。
  • レジストリサーバのプールからイメージをダウンロードし、コンテナを起動するためのホストサーバを構築する。
  • ベースとなる OS イメージは Docker HUB からダウンロードする。
  • コンテナ環境を実現するためのアプリケーションは Docker を使用する。
  • イメージのカスタマイズは Dockerfile と Ansible で行う。
  • プールでのイメージの管理は registry コンテナ(Docker HUB からダウンロード)を使用する。

※注意※ Docker コンテナはホスト OS のリソースをグループ化し割り当てたものです。VirtualBox 等の VM のようなハードウェアをエミュレートした仮想マシンではなく、ホスト OS と Docker コンテナは同じカーネルを使用します。(つまり Docker コンテナのために別途カーネルを用意しません。)仮想 OS 毎にカーネルの設定を変更する必要がある場合は、独立した VM をサポートする仮想基盤を使用する必要があります。

今回構築対象の論理構成は下図のとおりです。

container-structure-logical

構築対象の物理構成およびアプリのスタックは下図のとおりです。

container-structure-physical

Dockerイメージ・コンテナを生成、起動する手順の流れは以下のとおりです。

container-flow

① Docker HUB から OS のイメージをダウンロード(Dockerfile で指定)
② コンテナの起動と設定(Dockerfile で指定)
③ Ansible による各種設定
④ プールに登録するためのイメージを作成
⑤ プールにイメージを登録
⑥ プール登録済のため不要となったコンテナを停止、削除
⑦ プール登録済のため不要となったイメージを削除

①’ プールからイメージをダウンロード
②’ コンテナを起動

本環境で使用する OS およびアプリケーションのバージョンは以下のとおりです。

; レジストリサーバ
# cat /etc/redhat-release
Rocky Linux release 8.6 (Green Obsidian)

# python3 -V
Python 3.9.19

# ansible --version
ansible [core 2.15.12]

構築は以下の順番で行います。

container-structure-step0

ローカル環境にDockerイメージをプールするためのサーバを構築
ローカルプールからDockerイメージをダウンロードし、起動するためのサーバを構築

タイトルとURLをコピーしました