04プライベートレジストリ構築&カスタムPostgreSQL+Nginxでボリューム共有を実践してみた

type
status
date
slug
summary
tags
category
icon
password

1) プライベートレジストリの作成

  • 接続はデフォルトで暗号化されていない(HTTP)状態とする。

2) Docker Hubからイメージをダウンロード

  • 「nginx」ウェブサーバーイメージ

3) Containerfileの作成

  • postgresqlイメージをカスタマイズするContainerfileを作成する。
  • このカスタムイメージのデフォルトユーザーmkを「simona」とする。
  • イメージ名は「validation-postgres」とする。

4) イメージのプッシュと削除

  • 「nginx」と「validation-postgres」のイメージをローカルのプライベートレジストリにアップロードする。
  • アップロード後、ローカルのイメージはすべて削除する。

5) ボリュームの作成とカスタムコンテンpod,ツの設定

  • 「validation-volume」という名前のボリュームを作成する。
  • 自分の名前を含むカスタムの index.html ファイルを用意し、ボリュームのマウントポイントにコピーする。
  • ローカルレジストリからnginxイメージをダウンロードする。
  • nginxコンテナを起動し、カスタムの index.html が正しく配信されていることを確認する。
  • コンテナを削除し、新しくコンテナを起動しても同じコンテンツが配信されることを確認する。

6) ディレクトリ作成とPostgresqlコンテナの起動

  • 「database_validation」というディレクトリを作成する。
  • ローカルレジストリから「validation-postgres」イメージをダウンロードする。
  • PostgreSQLコンテナを起動し、「simona」ユーザーが「database_validation」ディレクトリに正しくアクセスできる権限を持っていることを確認する。
 

解決手順

こんにちは。今回はPodmanを使って、プライベートレジストリの構築からカスタムイメージ作成、ボリュームを使った永続化設定まで一連の流れを体験しました。
Docker Hubからのイメージ利用だけでなく、自分だけのローカルレジストリを使った運用の基礎が身につく内容です。ぜひ参考にしてください。

1. プライベートレジストリの構築(HTTP接続)

まず、プライベートなコンテナイメージレジストリを用意します。今回はセキュリティを省いて「HTTP(非暗号化)」での接続に設定しました。
これでローカルに localhost:5000 でアクセスできるシンプルなレジストリが立ち上がります。

2. Docker Hubからnginxとpostgresqlイメージをダウンロード

次に公式イメージをダウンロードします。

3. PostgreSQLのカスタムイメージを作成

validation-postgres という名前で、デフォルトユーザーを simona に変更したカスタムイメージを作ります。
Containerfileの例:
これを保存して、ビルドします。

4. イメージをローカルレジストリへプッシュ&削除

まずタグ付けしてからプッシュします。
プッシュ後はイメージを一旦削除します。

5. ボリューム作成とnginxでカスタムWebコンテンツを提供

ボリュームの作成とHTML準備

index.htmlをボリュームのマウントポイントにコピーします。

nginxコンテナの起動

動作確認

ブラウザで http://localhost:8080 にアクセスして、自作の名前入りページが表示されることを確認。

6. PostgreSQLコンテナで「simona」ユーザーの権限検証

ディレクトリ作成

イメージ取得とコンテナ起動

simonaユーザーのアクセス権確認

コンテナ内で /var/lib/postgresql/data ディレクトリが simona にアクセス可能かチェックしてください。

まとめ

  • ローカルのプライベートレジストリを簡単に作れた
  • カスタムユーザーを持つPostgreSQLイメージの作成
  • ボリュームを使った永続的なnginxコンテンツの提供
  • ローカルレジストリを活用したイメージ管理
PodmanはDocker互換でかつRootlessで安全に使えるので、開発環境としてもおすすめです。

Loading...