type
status
date
slug
summary
tags
category
icon
password

第3章: コンテナの管理

目標

事前に構築されたコンテナイメージを操作し、コンテナ化されたサービスを作成および管理します。

目的

  • コンテナのライフサイクルを作成から削除まで管理できるようになる。
  • コンテナの再起動時にアプリケーションデータを保持するために永続ストレージを使用する。
  • Dockerがどのようにコンテナにネットワークアクセスを提供するかを理解し、ポート転送を介してコンテナにアクセスする方法を学ぶ。

セクション

  • コンテナのライフサイクルの管理(およびガイド付き演習)
  • Docker永続ストレージの追加(およびガイド付き演習)
  • Dockerネットワークの利用(およびガイド付き演習)

コンテナのライフサイクルの管理

目標

このセクションを終えた後、学生はコンテナのライフサイクルを作成から削除まで管理できるようになります。

Dockerクライアントの動詞

Dockerクライアント(dockerコマンド)は、コンテナの作成および管理に使用される動詞(コマンド)のセットを提供します。以下は、コンテナの状態を変更するために最もよく使用される動詞のまとめです。

コンテナの状態を変更する動詞

  • docker run: 新しいコンテナを作成し、その中でプロセスを開始します。
  • docker ps: 実行中のコンテナのリストを表示します。
  • docker stop: 実行中のコンテナを停止します。
  • docker start: 停止したコンテナを再開します。
  • docker restart: 実行中のコンテナを再起動します。
  • docker rm: 停止したコンテナを削除します。
さらに、Dockerクライアントは、実行中または停止したコンテナに関する情報を取得するための動詞も提供しています。以下は、それに関する動詞のまとめです。
notion image

コンテナに関する情報を取得する動詞

  • docker logs: コンテナのログを表示します。
  • docker inspect: コンテナまたはイメージの詳細情報を取得します。
これらのコマンドは、コンテナの状態を管理したり、情報を取得したりする際に使用されます。
notion image

コンテナの作成

docker run コマンドを使用して、新しいコンテナを作成し、その中でプロセスを開始します。もしコンテナイメージがローカルにない場合、Dockerは自動的にそのイメージをダウンロードしようとします。

例: コンテナを作成して起動する

この出力では、コンテナは非インタラクティブなプロセスで開始され、Ctrl+C(SIGINT)でそのプロセスを停止すると、コンテナも停止します。
この出力の説明は、コンテナが非インタラクティブなプロセス(例えば、Webサーバーのようなもの)で開始されることを示しています。そのため、ユーザーが何かを入力したり、直接操作したりすることなく、プロセスが自動的に実行されます。
ここで、「Ctrl+C(SIGINT)」を押すと、そのプロセスが停止し、結果としてコンテナも停止するという意味です。非インタラクティブなプロセスでは、プロセスが終了するとコンテナ自体も終了するため、Ctrl+Cでプロセスが終了し、コンテナが停止することになります。

コンテナIDと名前

Dockerコマンドの管理には、コンテナIDまたは名前が必要です。docker run コマンドName指定ないと、はランダムなIDと名前を生成します。
コンテナIDは自動的に生成され、ユニークである必要があります。また、コンテナ名も自動的に生成されるか、手動で指定できます。

コンテナ名の明示的な指定

コンテナ名は--nameオプションを使用して指定できます。
名前はユニークである必要があります。同じ名前のコンテナが存在する場合(停止中のコンテナを含む)、エラーが発生します。

バックグラウンドでの実行(デタッチドモード)

  • d オプションを使用して、コンテナをバックグラウンドで実行することができます。これにより、コンテナIDが画面に表示されます。

コマンドの指定

コンテナイメージ自体には、コンテナ化されたプロセスを開始するためのコマンドが指定されていますが、docker runで異なるコマンドを指定することも可能です。
この例では、HTTPDサービスは開始されませんが、指定したコマンドがコンテナ内で実行されます。

インタラクティブモードでの実行

Bashシェルを実行したい場合は、次のように-itオプションを使います。
  • ti オプションは、インタラクティブなテキストベースのプログラムに適切な端末を提供しますが、バックグラウンドで動作するデーモンには必要ありません。

コンテナ内でコマンドを実行する

  1. docker exec コマンドを使った実行
      • コンテナ内で別のプロセスを実行するには、docker exec コマンドを使用します。
      • 例として、コンテナ内でホスト名を表示するコマンドを実行します。
      • コンテナIDの代わりにコンテナ名を使っても同様に実行できます。

コンテナの作成と管理に関するデモンストレーション

  1. コンテナの作成
      • 以下のコマンドで、rhel7 イメージを使ってコンテナを作成し、dd コマンドを実行します。このコマンドは、無限にデータをコピーし続けるため、コンテナは終了しません。
  1. コンテナが実行中か確認する
      • 新しいターミナルを開き、docker ps コマンドでコンテナが実行中か確認します。
  1. コンテナを停止する
      • 次に、コンテナを停止するために、docker stop コマンドを使用します。
  1. コンテナが停止したことを確認する
      • 再度、docker ps を実行し、コンテナが停止したことを確認します。
  1. コンテナ名を指定せずに新しいコンテナを作成
      • コンテナ名を指定せずに新しいコンテナを作成すると、Dockerが自動で名前を生成します。
  1. 生成されたコンテナ名を確認する
      • docker ps コマンドで生成されたコンテナ名を確認します。例として、reverent_blackwell という名前が生成されます。
  1. 生成されたコンテナを停止する
      • 生成されたコンテナを停止するために、docker stop コマンドを使用します。
  1. デーモンモードでコンテナを実行する
      • d オプションを使って、バックグラウンドでコンテナを実行します。例えば、MySQLや長時間動作するコマンド(例: dd)の実行に利用されます。
  1. デーモンモードで実行したコンテナを停止する
      • docker stop コマンドを使って、デーモンモードで実行しているコンテナを停止します。
  1. 特定のコマンドを実行して終了するコンテナ
      • コンテナ内で特定のコマンドを実行し、結果を表示して終了することもできます。例として、/etc ディレクトリの内容をリスト表示するコマンドを実行します。
  1. 実行中でないコンテナを確認する
      • コンテナが終了したことを確認するために、docker ps を実行します。
  1. インタラクティブモードでコンテナを実行する
      • インタラクティブモード(it オプション)でコンテナを実行し、コンテナ内で操作を行います。
  1. コンテナ内での操作を終了する
      • コンテナ内での操作が終了したら、exit コマンドでコンテナから抜けます。
  1. 停止したコンテナを削除する
      • 停止したコンテナを削除するために、docker rm コマンドを使用します。
  1. 名前なしで起動したコンテナを削除する
      • 名前なしで作成されたコンテナを削除するために、docker rm <container_name> コマンドを使用します。
  1. コンテナイメージの削除
      • 最後に、使用したコンテナイメージ(rhel7)を削除します。
これらの手順を通じて、コンテナの作成、管理、停止、削除の基本的な操作が理解できます。

Dockerコンテナ管理の基礎:便利なコマンドと実践例


Dockerコンテナを管理する基本コマンド

1. コンテナの一覧表示

実行中のコンテナを確認する

コマンド:docker ps
実行中のコンテナを確認できます。以下は典型的な出力例です。
  • CONTAINER ID: コンテナ固有の16進数ID
  • IMAGE: 使用されたイメージ名
  • COMMAND: コンテナ起動時のコマンド
  • STATUS: 実行状態
  • PORTS: 公開されているポート情報
  • NAMES: コンテナ名

停止したコンテナも含めて表示

  • a オプションを付けることで、すべてのコンテナを表示できます。

2. コンテナの停止

実行中のコンテナを優雅に停止する

コマンド:docker stop <コンテナ名>
以下の例では、my-httpd-container という名前のコンテナを停止します。

3. コンテナの強制停止

シグナルを使用してコンテナを停止

コマンド:docker kill <コンテナ名>
特定のシグナル(例: SIGKILL)を使用してコンテナを停止します。

4. コンテナの再起動

停止中のコンテナを再起動

コマンド:docker restart <コンテナ名>
同じ状態のコンテナを再起動できます。

5. コンテナの削除

不要なコンテナを削除する

コマンド:docker rm <コンテナ名>
以下は、すべてのコンテナを削除する例です。

実行中のコンテナを停止してから削除

すべてのコンテナを停止してから削除します。

6. コンテナの詳細情報を確認

コンテナのメタデータを表示

コマンド:docker inspect <コンテナ名>
コンテナの詳細な情報をJSON形式で表示します。特定のフィールドのみを表示する場合は、-f オプションを使用します。
例: IPアドレスを取得

実践例:HTTPDコンテナの起動と操作

以下は、HTTPD(Apache HTTP Server)コンテナを使用した実践例です。
  1. コンテナを起動
      • デーモンモードでコンテナを起動。
      • 名前を demo-container に設定。
  1. コンテナの停止と再起動
    1. コンテナ内でファイルを作成
      1. ページを確認
        1. 作成したページにアクセス。
      1. 新しいコンテナの起動とデータ確認
        1. 新しいコンテナを起動しても、以前のコンテナで作成したデータは引き継がれません。

      まとめ

      Dockerは強力なコンテナ管理ツールを提供し、効率的なアプリケーション開発とデプロイを可能にします。
       
      相关文章
      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
      08-Red Hat DO285 第3章: コンテナの管理-2:ガイド付き演習:MySQLコンテナの管理06-Red Hat DO285 第2章:コンテナ化されたサービスの作成-2:ガイド付き演習
      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入门
      以及技术笔记和考证经验
      定期更新,欢迎互动。
      感谢访问!
      快速浏览相关标签