type
status
date
slug
summary
tags
category
icon
password
コンテナ化されたサービスの作成
目標
コンテナ技術を使用してサーバーを提供する。
目的
  • Docker Hubに保存されたコンテナイメージを使ってデータベースサーバーを作成する。
セクション
  • データベースサーバーの提供(ガイド付き演習)
ラボ
  • コンテナ化されたサービスの作成

データベースサーバーの提供

目的
このセクションを終えた後、学生は次のことができるようになります:
  • Docker Hubに保存されたコンテナイメージからデータベースサーバーを作成する。
  • Docker Hubサイトでコンテナを検索する。
  • dockerコマンドを使ってコンテナを開始する。
  • コマンドラインからコンテナにアクセスする。
  • Red Hatコンテナカタログを活用する。

Docker Hubでイメージを探す

多くのコンテナイメージは、Dockerコミュニティのウェブサイト(https://docker.io)からダウンロード可能です。このサイトは、大規模なリポジトリで、開発者や管理者がコミュニティや企業によって開発された多数のコンテナイメージを取得することができます。
デフォルトでは、DockerはDocker Hubのイメージレジストリからイメージレイヤーをダウンロードします。ただし、イメージ自体には詳細な説明が含まれていない場合があり、そのため、各イメージやその機能に関する情報を探すための検索エンジンツール「Docker Hub」が作成されました。
注意
Red Hatは、テスト済みで認定されたコンテナイメージを提供するプライベートレジストリも提供しています。
デフォルトで、RHEL 7はDocker Hubに加えて、Red Hatのレジストリも検索するように設定されています。
Docker Hubの検索エンジンは、プロジェクト名やDocker Hubのコンテナイメージレジストリから似たようなイメージ名を検索するシンプルで効果的なツールです。検索結果ページには、イメージファイルを取得するためのコマンド(プルコマンド)が表示されます。例えば、次のスクリーン出力では、最初の列にコンテナイメージの名前が表示されます。
notion image
イメージ名をクリックすると、コンテナイメージの詳細ページが表示されます。ただし、詳細ページに表示される情報は一律ではなく、各作者が提供する情報のレベルが異なるため、必ずしも特定の情報が表示されるわけではありません。
notion image

Dockerクライアントからの検索

docker コマンドを使ってコンテナイメージを検索することもできます。以下のコマンドを実行することで、特定のイメージを検索できます:
この検索コマンドは、Docker Hubのレジストリだけでなく、APIバージョン1をサポートする他のレジストリも検索対象にします。
docker コマンドを実行するには特別な権限が必要です。開発環境では、通常、開発者を docker グループに追加して、適切な権限を与えます。もし docker コマンドを実行する権限がない場合、次のようなエラーメッセージが表示されます:

注意

本番環境では、docker コマンドのアクセス権限を付与する際は、sudo コマンドを使うべきです。なぜなら、docker グループは権限昇格攻撃に対して脆弱だからです。

イメージの取得

Docker Hubコンテナイメージレジストリからイメージをダウンロードするには、Docker Hubの検索結果ページから最初の列に表示されるイメージ名を確認するか、docker search コマンドの出力結果の2列目に表示される名前を利用して、次のように docker pull コマンドを使用します:
このコマンドは、mysql のコンテナイメージをDocker Hubからダウンロードします。docker pull コマンドが正常に実行されると、必要なイメージのレイヤーがコンテナにダウンロードされ、使用できる状態になります。

以上が、Dockerクライアントを使ったコンテナイメージの検索と取得の手順です。このプロセスにより、必要なイメージを迅速に取得し、開発環境で使用できるようになります。

同一イメージの複数のバージョン

同じイメージには、複数のバージョンが提供されることがあります。各バージョンは異なるタグ名を持っています。例えば、MySQLイメージの詳細ページでは、複数のタグが割り当てられた3つの異なるイメージ名が提供されています。
タグ名が指定されていない場合、docker pull はデフォルトで「latest」タグを使用します。特定のタグをダウンロードするには、イメージ名にコロン(:)でタグ名を追加して、次のように docker pull コマンドを実行します:

ローカルキャッシュにあるイメージのリスト表示

ローカルDockerデーモンで既にダウンロードされたイメージをリスト表示するには、docker images コマンドを使用します:
  • REPOSITORY 列には、イメージ名が最後のパスコンポーネントとして表示されます。
  • Dockerデーモンのインストール直後はイメージがないため、システム管理者がイメージをダウンロードするまでリストは空です。
  • イメージ名にはレジストリ名がプレフィックスとして付けられます。通常はレジストリホストのFQDN名ですが、任意の文字列でも可能です。イメージ名にはタグも含めることができます。
イメージ名の完全な構文(オプションのパラメータを含む)は次の通りです:
例: docker.io/library/mysql:latest
  • Docker Hubのユーザー名なしで提供されるイメージ名は、実際には「library」というユーザー名が使用されており、前述のイメージ名は次のように同じです:docker.io/mysql:latest
  • 「library」ユーザーは、公式に整理されたイメージに関連付けられており、Docker Hub Registryで提供されています。

コンテナの作成

新しいコンテナ内でプロセスを作成し、開始するには、docker run コマンドを使用します。コンテナは、引数として渡されたコンテナイメージ名から作成されます:
もしイメージがローカルDockerデーモンキャッシュに存在しない場合、docker run コマンドは、まるで docker pull コマンドを実行したかのように、そのイメージをプルしようとします。

docker run コマンドの出力

docker run コマンドが表示する出力は、コンテナ内で実行されているプロセスから生成されます。このプロセスはホストOSから見た通常のプロセスです。このプロセスを終了させると、コンテナも停止します。例えば、インタラクティブではないプロセスでコンテナを起動し、その後Ctrl+C(SIGINT)で停止させると、コンテナも停止します。

バックグラウンドでコンテナを起動

コンテナをバックグラウンドで実行したい場合は、-d オプションを使います。これにより、コンテナがバックグラウンドで実行されます:

コンテナ名の指定

コンテナには名前を付ける必要があります。名前を指定しない場合、Dockerが自動で名前を生成します。しかし、コンテナの管理や追跡を簡単にするために、--name オプションを使って名前を指定できます:

異なるコマンドでコンテナを起動

コンテナを起動する際に、デフォルトのコマンドではなく、別のコマンドを実行させることも可能です。例えば、MySQLコンテナ内で bash シェルを起動するには、以下のようにします:

インタラクティブプログラムの起動

  • ti オプションを使用することで、インタラクティブなプログラムを実行できます。これにより、コンテナ内で疑似端末が割り当てられ、ユーザーが直接操作できるようになります。バックグラウンドで動作するプロセスには、これらのオプションは必要ありません。

環境変数の設定

多くのコンテナイメージでは、起動時に設定すべき環境変数があります。例えば、MySQLの公式イメージでは、-e オプションを使って環境変数を指定します。これにより、コンテナ内で実行されるプロセスが環境変数を利用できます。例えば:
これにより、MYSQL_ROOT_PASSWORD という環境変数が設定され、MySQLのルートパスワードが指定されます。

MySQLサーバーをカスタムユーザーで起動する

MySQLコンテナをカスタムユーザー名とパスワードで起動するには、-eフラグを使用して必要な環境変数を設定します。以下は、MySQLサーバーをユーザーredhatおよびパスワードr3dh4tで起動する例です。
  • e MYSQL_USER=redhat:MySQLのユーザー名をredhatに設定。
  • e MYSQL_PASSWORD=r3dh4t:MySQLのパスワードをr3dh4tに設定。
  • d:コンテナをバックグラウンドモードで実行(デタッチモード)。
  • mysql:5.5:MySQLの5.5バージョンのイメージを指定。

Red Hat Container Catalog (RHCC)の活用

Red Hatは、高品質なコンテナイメージのリポジトリを提供しています。このリポジトリを使用することで、既知の脆弱性に対する保護と信頼性を確保できます。標準のdockerコマンドでこのリポジトリを利用することができますが、Red Hat Container Catalog(RHCC)というウェブポータルを使用すると、Red Hatのコンテナイメージを検索し、操作するためのユーザーフレンドリーなインターフェースを提供します。
  • RHCCは、リポジトリ内のコンテナイメージを検索・探索できるインターフェースを提供します。
  • イメージの「ヘルスインデックスグレード」を確認することができ、これはイメージの最新性とセキュリティ更新の適用状態を示します。グレードはAからFまであり、Aが最良です。
  • RHCCでは、イメージの最新のバグ修正や強化に関する情報を提供する「エラタ(Errata)」ドキュメントにもアクセスできます。
  • また、各オペレーティングシステムでイメージを引き出す最適な方法も提案しています。
RHCCへのアクセスは、https://access.redhat.com/containers/で可能です。
notion image
Red Hat Container Catalog (RHCC)で「Apache」を検索ボックスに入力すると、検索パターンに一致する製品やイメージリポジトリの推奨リストが表示されます。表示されたリストから、Apache httpd 2.4-rhscl/httpd-24-rhel7 を選択すると、Apache httpd 2.4のイメージページにアクセスできます。
notion image
Apache httpd 2.4パネルの下には、詳細情報といくつかのタブが表示されます。このページには、Red Hat, Inc.がイメージリポジトリを管理していることが記載されています。また、このイメージリポジトリがRed Hat Enterprise Linuxと関連していることも示されています。Overviewタブの下には、次のような詳細が記載されています:
  • Description: イメージの機能についての簡単な説明。
  • Evaluate Image: OpenShift Online(公開PaaSクラウド)を使用して、イメージ内のアプリケーションの機能状態を検証できます。
  • Most Recent Tag: イメージが最後に更新された時期、その更新内容、イメージの健康状態などが表示されます。
    notion image
    Using red hat loginタブでは、イメージの最新バージョンを取得する手順が提供されます。イメージを使用するプラットフォームを指定すると、そのプラットフォームに適した実行コマンドがページに表示されます。
    参考文献
     
    相关文章
    RedHat EX200 本番近い試験問題集
    Lazy loaded image
    RedHat EX200 本番試験問題集(有料版)
    Lazy loaded image
    18-Red Hat DO285 第5章:カスタムコンテナイメージの作成-1:コンテナイメージの管理ラボ
    Lazy loaded image
    17-Red Hat DO285 第4章:コンテナイメージの管理-4:コンテナイメージの管理ラボ
    Lazy loaded image
    16-Red Hat DO285 第4章:コンテナイメージの管理-3:ガイド付き演習
    Lazy loaded image
    15-Red Hat DO285 第4章:コンテナイメージの管理-2:コンテナイメージの操作
    Lazy loaded image
    21-Red Hat DO285 第7章:OpenShiftインストール-1:演習インストールのためのサーバー準備04-Red Hat DO285 第2章:コンテナ技術の説明-3:KubernetesとOpenShiftアーキテクチャの説明
    Loading...
    みなみ
    みなみ
    一个普通的干饭人🍚
    最新发布
    02-生成AIパスポート試験対策:第2章「生成AI」
    2025-2-1
    01-生成AIパスポート試験対策:第1章「人口知能」
    2025-2-1
    究極のAWS認定 AI 実践者 AIF-C01 - 学習メモ
    2025-1-27
    不要再傻傻的直接买NISA啦
    2025-1-27
    Kubernetes、仮想マシンとコンテナの概念を超簡単に解説!
    2025-1-24
    529-AWS SAP AWS 「理論・実践・一問道場」VPCエンドポイント
    2025-1-22
    公告
    🎉欢迎访问我的博客🎉
    - 感谢您的支持 --
    本站点于2024/09/01建立
    👏主要分享IT相关主题👏
    系统管理:
    Redhat…
    容器和编排:
    Kubernetes、Openshift…
    云计算:
    AWS、IBM…
    AI入门
    以及技术笔记和考证经验
    定期更新,欢迎互动。
    感谢访问!
    快速浏览相关标签