Docker コンテナの実行

DockerBeginner
オンラインで実践に進む

はじめに

この実験では、ビクトリア朝時代を舞台にしたシナリオに身を浸し、古美術品ディーラーの役割を担います。あなたの目標は、現代技術、具体的には Docker コンテナを活用して、歴史的な遺物を効果的に輸送し、展示することです。

あなたが 1880 年代のロンドンで尊敬される古美術品ディーラーで、世界中から集めた並外れた遺物コレクションで知られていると想像してみてください。しかし、従来の木箱や展示ケースの代わりに、「Docker コンテナ」と呼ばれる革新的な技術を発見しました。この技術により、貴重な品物をこれまでにない効率と安全性で梱包、輸送、展示することができます。

この実験の終了時には、Docker コンテナの基本と、それを使ってアプリケーションを実行する方法を理解するでしょう。このビクトリア朝のシナリオでは、これがあなたの貴重な古美術品コレクションを管理し、展示する能力を表します。

Docker 環境のセットアップ

このステップでは、コンテナを実行するために Docker 環境が適切にセットアップされていることを確認します。これは、必要な道具や設備を備えた古美術品のワークショップを準備するようなものです。

  1. ターミナルで以下のコマンドを実行して Docker をインストールします。

    sudo apt update
    sudo apt install docker.io

    最初のコマンドはパッケージリストを更新して、最新バージョンの Docker を取得することを保証します。2 番目のコマンドは Docker 自体をインストールします。sudo 接頭辞はインストールに必要な管理者権限を付与します。

  2. Docker のインストールが完了したら、Docker サービスを起動します。

    sudo systemctl start docker

    このコマンドは Docker サービスを起動します。これは、ワークショップを営業開始するのと似ています。Docker デーモンがバックグラウンドで実行され、コンテナの要求を処理する準備ができました。

  3. Docker が正常に実行されていることを確認します。

    sudo systemctl status docker

    このコマンドは Docker がアクティブで正常に実行されているかを確認します。緑色のテキストで「active (running)」と表示される出力が見えるはずです。これにより、Docker 環境が準備完了であることが確認できます。「inactive」やエラーメッセージが表示された場合は、サービスの起動を再試行する必要があるかもしれません。

  4. 毎回 sudo を使用せずに Docker コマンドを実行できるようにするには、ユーザーを Docker グループに追加します。

    sudo usermod -aG docker $USER

    注意:このコマンドを実行した後、変更を有効にするためにログアウトして再ログインする必要がある場合があります。この実験では、互換性を確保するために Docker コマンドに引き続き sudo を使用します。

Hello-World コンテナの実行

環境のセットアップが完了したので、最初の Docker コンテナ、つまりシンプルな「hello-world」の例を実行します。これは、新しいコンテナ技術が期待通りに動作することを確認するために、最初の遺物を展示するようなものです。

  1. Docker Hub から「hello-world」イメージを取得します。

    sudo docker pull hello-world

    このコマンドは、Docker Hub(Docker イメージの公開リポジトリ)から hello-world イメージをダウンロードします。これは、遠い土地から最初の遺物を入手するようなものです。Docker Hub は、様々な目的のために事前にパッケージ化されたコンテナを見つけることができるマーケットプレイスとして機能します。

  2. 「hello-world」コンテナを実行します。

    sudo docker run hello-world

    このコマンドは、hello-world イメージからコンテナを作成して起動します。コンテナは、メッセージを出力してから終了するシンプルなプログラムを実行します。このビクトリア朝のシナリオでは、これは新しいコンテナシステムが正常に動作することを確認するために、最初の遺物を一時的に展示するのと同等です。

  3. 出力を確認して、コンテナが正常に実行されたことを確認します。「Hello from Docker!」で始まり、その後にいくつかの説明テキストが続くメッセージが表示されるはずです。これにより、以下のことが確認されます。

    • Docker が正しくインストールされている
    • システムがコンテナを正常に作成できる
    • Docker Hub からイメージをダウンロードできる
  4. すべてのコンテナ(終了したものも含む)のリストを表示するには、次のコマンドを実行します。

    sudo docker ps -a

    このコマンドは、現在終了している hello-world コンテナを含むすべてのコンテナを表示します。コンテナ ID、作成に使用されたイメージ、作成日時、現在の状態などの詳細が表示されます。

Nginx Web サーバーのデプロイ

このステップでは、Docker コンテナを使用して Nginx Web サーバーをデプロイします。このビクトリア朝のシナリオでは、これは最も貴重な古美術品(Web コンテンツ)を訪問者に展示するためのエレガントな展示ケース(Nginx)をセットアップすることを表します。

  1. Docker Hub から Nginx イメージを取得します。

    sudo docker pull nginx

    このコマンドは、Docker Hub から公式の Nginx イメージをダウンロードします。Nginx は HTML コンテンツを配信できる人気の Web サーバーです。これは、古美術品コレクション用の素敵な展示ケースを入手するのと同等です。

  2. ホストのポート 80 をコンテナのポート 80 にマッピングして、Nginx コンテナをデタッチドモードで実行します。

    sudo docker run -d -p 80:80 nginx

    このコマンドを分解して説明します。

    • run: 新しいコンテナを作成して起動します。
    • -d: コンテナをデタッチドモード(バックグラウンド)で実行します。
    • -p 80:80: ホストマシンのポート 80 をコンテナ内のポート 80 にマッピングし、Web トラフィックが Nginx サーバーに到達できるようにします。
    • nginx: 使用するイメージを指定します。

    これは、展示ケースを展示室に配置し、訪問者が古美術品を見ることができるようにするのと同じです。

  3. Nginx コンテナが実行されていることを確認します。

    sudo docker ps

    このコマンドは、すべての実行中のコンテナを表示します。リストに Nginx コンテナが表示され、アクティブに実行されていることが示されます。

  4. 上部メニューの実験から Web サービスマッピングを追加し、ポートマッピングを 80 に設定します。Nginx Web サーバーが正常に実行されている場合、実験環境はサーバー実験内のランダムな URL に自動的に移動し、デフォルトの Nginx ウェルカムページが表示されます。

  5. オプション:手動でブラウザから Nginx サーバーにアクセスしたい場合は、http://localhost またはマシンの IP アドレスに移動することができます。

  6. 問題が発生した場合は、コンテナのログを確認することができます。

    sudo docker logs <container_id>

    <container_id> を Nginx コンテナの ID に置き換えます。この ID は docker ps コマンドの出力から見つけることができます。

まとめ

この実験では、Docker コンテナを実行する基本的な概念を学びました。ビクトリア朝時代の古美術品ディーラーとして歴史的なシナリオをシミュレートすることで、Docker の実行機能を活用する実践的な経験を積みました。

以下のことを学びました。

  • Docker 環境のセットアップ
  • Docker Hub からイメージを取得する方法
  • フォアグラウンドモードとデタッチドモードでコンテナを実行する方法
  • コンテナのポートをホストマシンに公開する方法
  • コンテナの状態を確認する方法

これらのスキルはコンテナ技術の基礎を形成し、古美術品ディーラーのシナリオ以外の幅広いアプリケーションに適用できます。現代の環境では、同じ技術がシンプルな Web サーバーから複雑なマイクロサービスアーキテクチャまで、様々なアプリケーションのデプロイに使用されています。

アプリケーションとその依存関係をポータブルなコンテナにパッケージ化する能力は、ソフトウェアのデプロイと管理方法を革命的に変えます。これは、標準化された輸送コンテナが世界貿易を変革したのと同じようなものです。ビクトリア朝の古美術品ディーラーが言うかもしれないように、「これらの素晴らしい Docker コンテナは、私たちが宝物を世界に展示する方法を革命化するでしょう!」