type
status
date
slug
summary
tags
category
icon
password
书籍

ソリューション

ソフトウェアアプリケーションのコンテナ化とデプロイ
この総合演習では、Nexus サーバーをコンテナ化し、Docker を使用してビルドおよびテストを行い、その後 OpenShift クラスターにデプロイします。

達成目標

以下のスキルを習得します:
  • Nexus サーバーを適切にコンテナ化する Dockerfile を作成できる。
  • Docker を使用して Nexus サーバーのコンテナイメージをビルドし、デプロイできる。
  • Nexus サーバーのコンテナイメージを OpenShift クラスターにデプロイできる。

事前準備

総合演習用のセットアップスクリプトを実行してください。
ラボ用のファイルは /home/student/DO285/labs/review に配置されています。
ソリューションファイルは /home/student/DO285/solutions/review にあります。

手順

1. Nexus サーバーをコンテナ化する Docker イメージの作成

  • サーバーは nexus ユーザーおよびグループ(UID: 1001, GID: 1001) として動作する必要があります。
  • java-1.8.0-openjdk-devel パッケージ をインストールする必要があります。このパッケージをインストールするための RPM リポジトリは、提供されている training.repo ファイルに設定されています。このファイルをコンテナの /etc/yum.repos.d ディレクトリに追加してください。
  • Nexus サーバーは nexus-2.14.3-02-bundle.tar.gz という圧縮ファイルで提供されます。このファイルは以下の URL から取得できます: ※ get-nexus-bundle.sh スクリプトを使用して、イメージのビルド前にこのアーカイブを取得できます。
    • nexus-start.sh スクリプトを実行して Nexus サーバーを起動してください。
    • 作業ディレクトリおよび Nexus のホームディレクトリは /opt/nexus にすること。バージョン固有の Nexus ディレクトリを nexus2 という名前でシンボリックリンクとして設定してください。
    • 永続データは /opt/nexus/sonatype-work に保存されるため、永続ボリュームとしてマウントできるようにすること。
      • まず、永続ボリュームなしでコンテナをビルド・テストし、その後永続ボリュームを追加する方法で作業を進めるのがおすすめです。
    • nexus アカウント作成用のスニペットJava のインストール用スニペットimage lab ディレクトリにあります。Dockerfile 作成時に活用してください。

    2. Docker を使用してコンテナをビルド・テスト

    • 作成した Docker イメージを、ボリュームマウントなし/ありの両方でテストしてください。
    • /home/student/DO285/labs/deploy/dockerボリュームマウント付きでコンテナを実行するためのシェルスクリプト があります。
    • 実行中のコンテナの IP アドレスを確認し、curl コマンドやコンテナのログを使って Nexus サーバーが正常に動作しているかを検証してください。

    3. Nexus サーバーのコンテナイメージを OpenShift クラスターにデプロイ

    • コンテナイメージを classroom のプライベートレジストリ (registry.lab.example.com) にプッシュすること。
    • /home/student/DO285/labs/review/deploy/openshift に、デプロイを支援する以下のファイルやスクリプトがあります。
      • create-pv.sh(Nexus の永続データ用の Kubernetes 永続ボリュームを作成)
      • delete-pv.sh(永続ボリュームの削除)
      • resources/pv.yaml(永続ボリュームの定義)
      • resources/nexus-template.json(Nexus サーバーのデプロイ用 OpenShift テンプレート)
    • /home/student/DO285/solutions/review には、デプロイ/アンデプロイの参考になるスクリプトが用意されています。
    • イメージのタグは nexus:latest にすること(OpenShift テンプレートがこの名前を前提としている)。
    • OpenShift のプロジェクト名は review に設定すること。
    • プロジェクト作成後、setpolicy.sh を実行して適切な権限を設定してください。
    • 永続ボリュームを作成後に Nexus のデプロイを実施すること。
    • Nexus サーバーのサービスを デフォルトのルート名で公開し、ブラウザでアクセスできるようにする。

    4. 動作確認と評価

    • 採点スクリプトを実行し、作業の評価を行う。

    5. クリーンアップ

    • OpenShift で作成したプロジェクトを削除し、ローカルの Docker イメージを削除してください。

    この手順に従って Nexus サーバーをコンテナ化し、Docker でテストした後、OpenShift にデプロイして動作を確認してください。

    Let’s go!

    1. Nexusサーバをコンテナ化するためのDockerfileを作成する
      1. /home/student/DO285/labs/review/imageディレクトリに移動し、Dockerfileを作成してください。
        1.1 ベースイメージを指定する
        1.2 任意の名前とメールアドレスをメンテイナーとして設定する
        1.3 NEXUS_VERSIONとNEXUS_HOMEの環境変数を設定する
        1.4 training.repoを/etc/yum.repos.dディレクトリに追加し、Javaパッケージをyumコマンドでインストールする
        1.5 サーバのホームディレクトリとサービスアカウント/グループを作成する
        1.6 NexusサーバソフトウェアをNEXUS_HOMEにインストールし、起動スクリプトを追加する
        1.7 コンテナをnexusユーザーとして実行し、作業ディレクトリを/opt/nexusに設定する
        1.8 Nexusサーバの永続データを保存するためのボリュームマウントポイントを定義する
        1.9 Nexusサーバのシェルスクリプトを実行する
        完成したDockerfileは次のようになります:
    1. get-nexus-bundle.shスクリプトを使ってNexusサーバのファイルをイメージディレクトリに取得する
      1. 取得後、nexusというタグでコンテナイメージをビルドします:
    1. 提供されたrun-persistent.shシェルスクリプトを使って、Dockerでイメージをテストする
      1. /home/student/DO285/labs/review/deploy/dockerディレクトリに移動し、コンテナ名をdocker psコマンドで確認した名前に置き換えます:
        説明:
      2. cd /home/student/DO285/labs/review/deploy/docker
          • dockerディレクトリに移動します。
      3. ./run-persistent.sh
          • run-persistent.shスクリプトを実行します。このスクリプトは、Dockerコンテナをバックグラウンドで起動し、必要なディレクトリを設定します。
          • 出力:コンテナID(例:80970007036bbb313d8eeb7621fada0ed3f0b4115529dc50da4dccef0da34533)が表示されます。
      4. docker ps
          • 現在実行中のDockerコンテナの一覧を表示します。
          • 出力:コンテナが正常に起動したことを確認できます。
            • コンテナID:80970007036b
            • イメージ:nexus
            • コマンド:sh nexus-start.sh
            • ステータス:Up 4 seconds(起動してから4秒)
            • 名前:quizzical_fermat
      5. docker logs -f quizzical_fermat
          • quizzical_fermatという名前のコンテナのログを表示し、リアルタイムで更新を追跡します。
          • 出力:Nexusが正常に起動している様子がログに表示されます。
            • NexusのWebサーバーがポート8081で起動し、Jettyサーバーが開始されていることが確認できます。
      6. docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' quizzical_fermat
          • 実行中のコンテナ(quizzical_fermat)のIPアドレスを取得します。
          • 出力:コンテナのIPアドレスは172.17.0.2です。
      7. curl -v 172.17.0.2:8081/nexus/
          • コンテナ内で実行中のNexusサーバーにHTTPリクエストを送信し、応答を確認します。
          • 出力:
            • HTTPレスポンスコード302 Foundが返され、ブラウザやクライアントはリダイレクトされることがわかります。
            • Location: http://172.17.0.2:8081/nexus/が示されており、NexusのWebインターフェースにアクセス可能であることを意味します。
      8. docker kill quizzical_fermat
          • quizzical_fermatコンテナを強制終了します。
          • 出力:コンテナが終了したことが表示されます(quizzical_fermat)。

        まとめ:

        • この一連の操作は、NexusというサービスをDockerコンテナ内で起動し、そのサービスが正常に動作しているか確認するプロセスです。
        • run-persistent.shを実行して、コンテナをバックグラウンドで起動し、Nexusのログで動作確認を行い、最後にコンテナを停止しています。
    1. Nexusサーバのコンテナイメージをクラスルームプライベートレジストリに公開する
      1. OpenShiftクラスターにNexusサーバのコンテナイメージをデプロイする
        1. /home/student/DO285/labs/review/deploy/openshiftディレクトリにあるリソースを使用して行います。
          5.1 OpenShiftプロジェクトを作成し、セキュリティコンテキストポリシーを設定する
          5.2 Nexusサーバの永続データを格納するための永続ボリュームを作成する
          5.3 テンプレートを処理し、Kubernetesリソースを作成する
          5.4 サービスを公開するためのルートを作成する
          5.5 ブラウザを使用してNexusサーバのWebアプリケーションに接続する
          http://nexus-review.apps.lab.example.com/nexus/ URLを使って接続します。
          notion image

      評価
      OpenShiftクラスターにNexusサーバのコンテナイメージをデプロイした後、ラボ評価スクリプトを実行して作業を確認します:
      クリーンアップ
      レビューが完了したら、次のようにプロジェクトを削除し、永続ボリュームを削除します:
      これでラボは終了です。

       
      相关文章
      RedHat EX200 本番近い試験問題集
      Lazy loaded image
      RedHat EX200 本番試験問題集(有料版)
      Lazy loaded image
      82- 第17章:導入総復習-3:OpenShiftにマルチコンテナデプロイのラボ
      Lazy loaded image
      80- 第17章:導入総復習-1:総合レビュー
      Lazy loaded image
      79- 第16章:OpenShiftの管理と監視-8:ラボ
      Lazy loaded image
      78- 第16章:OpenShiftの管理と監視-8:ウェブコンソールでリソースの監視の演習
      Lazy loaded image
      82- 第17章:導入総復習-3:OpenShiftにマルチコンテナデプロイのラボ80- 第17章:導入総復習-1:総合レビュー
      Loading...
      みなみ
      みなみ
      一个普通的干饭人🍚
      最新发布
      第1回:イントロダクション
      2025-4-21
      TOKYO自習島
      2025-4-21
      第1回:イントロダクション
      2025-4-18
      第1回:オリエンテーション/意思決定と会計情報
      2025-4-18
      建物業法の基本と免許-59問
      2025-4-10
      宅建士过去问速刷:小南小白陪你拿证-001
      2025-4-7
      公告

      🎉 欢迎访问我的博客 🎉

      🙏 感谢您的支持 🙏

      📅 本站自 2024年9月1日 建立,致力于分享我在 IT・MBA・不动产中介 等领域的学习与实践经验,并推动 线上线下学习会 的自主开展。

      📚 主要内容

      💻 IT・系统与开发

      • 系统管理:Red Hat 等
      • 容器与编排:Kubernetes、OpenShift
      • 云计算:AWS、IBM Cloud
      • AI 入门:人工智能基础与实践
      • 技术笔记与考证经验

      🏠 不动产 × 宅建士

      • 宅建士考试笔记

      🎓 MBA 学习笔记

      • 管理学、经济学、财务分析等

      🔍 快速查找内容(标签分类)

      由于网站目前没有专门的设计,可能会导致查找信息不便。为了更快找到你感兴趣的内容,推荐使用以下标签功能 进行搜索!
      📌 定期更新,欢迎常来看看!
      📬 有任何建议或想法,也欢迎留言交流!