Docker イメージとレジストリ

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

はじめに

このチャレンジでは、Docker イメージを使って遊びましょう。Docker コンテナイメージは、軽量で独立した実行可能なソフトウェアパッケージであり、アプリケーションを実行するために必要なすべてのもの(コード、ランタイム、システムツール、システムライブラリ、設定)を含んでいます。

Docker イメージを変更する

Docker イメージにはイメージ名とイメージタグが含まれており、イメージ名はリポジトリアドレスとイメージ識別子で構成されています。このサブセクションでは、他人が作成した Docker イメージを自分のリポジトリにプッシュします。

目標

あなたの目標は、dockerhub上のパブリックなubuntuイメージを自分のプライベートリポジトリにプッシュすることです。

結果例

このチャレンジの終了時に達成できることの例を以下に示します。

  1. dockerhubに登録してログインする。
Dockerhub 登録ログイン画面
  1. ubuntu:22.10イメージを docker hub からローカルサーバーにダウンロードする。
Ubuntu Docker イメージのダウンロード
  1. ubuntu:22.10イメージを自分のリポジトリアドレスに変更する。
Docker イメージのリポジトリを変更する
  1. docker hub にサインインする。
Docker Hub ログイン画面
  1. イメージをリモートリポジトリにプッシュする。
イメージをリポジトリにプッシュする

要件

このチャレンジを完了するには、以下が必要です。

  • Docker エンジンをインストールする。
  • Docker コマンドラインに関する知識がある。
  • 更新する必要のある既存の Docker イメージ
✨ 解答を確認して練習

Web イメージを構築する

私たちは通常、ウェブサイトなどの静的アプリケーションを実行するためにnginxを使用します。このセクションでは、私たち自身のウェブイメージを構築します。

目標

あなたの目標は、Docker コンテナイメージを作成し、その中に単純なウェブアプリケーションをパッケージ化し、そのイメージを使ってコンテナを起動し、適切にアクセス可能にすることです。

結果例

このチャレンジの終了時に達成できることの例を以下に示します。

  1. /home/labex/Codeディレクトリにindex.htmlという新しいファイルを作成し、その内容をhello labexにする。
index html ファイルの作成
  1. 以下の内容を持つDockerfileという新しいファイルを作成する
Dockerfile の内容例
  1. your_dockerhub_id/web:1.1.0の形式でウェブイメージを構築する。
Docker ウェブイメージの構築
  1. 作成したウェブイメージをdockerhubにプッシュする。
ウェブイメージを DockerHub にプッシュする
  1. your_dockerhub_id/web:1.1.0webという名前のコンテナを起動し、ホストのポート80をマッピングする必要もあります。
Docker コンテナ web の起動
  1. curlコマンドを使ってhttp://127.0.0.1にアクセスし、出力がhello labexであることを確認する。
curl コマンドの出力 hello labex

要件

このチャレンジを完了するには、以下が必要です。

  • Dockerfileを使った構築
  • ベースイメージをNginx:latestと指定する
  • Dockerfileで EXPOSE コマンドを使ってポート80を公開する
  • ビルドが完了した後、コンテナが正常に動作し、HTTP 要求に応答できることを確認する
✨ 解答を確認して練習

マルチステージイメージ構築

コンテナイメージを作成するには、多くの場合、2 つのステップが必要です。

  1. アプリケーションのビルドをコンパイルする。
  2. アプリケーションイメージを作成する。

このセクションでは、これら 2 つのステップを 1 つの Docker ファイルにまとめて、マルチステージビルドを実現します。

このチャレンジセクションを完了するために、https://github.com/joker-bai/go-hello-world.gitHello Worldプロジェクトを用意してあります。

目標

あなたの目標は、マルチステージビルドを使ってコンテナイメージを作成し、そのイメージを使ってコンテナを起動し、適切にアクセス可能にすることです。

結果例

このチャレンジの終了時に達成できることの例を以下に示します。

  1. /home/labex/Codeディレクトリにhello-worldディレクトリを作成する。
    hello world ディレクトリの作成

  2. このディレクトリに以下の内容を持つDockerfileを作成する
    Dockerfile の作成例

  3. your_dockerhub_id/go-hello-world:1.1.0の形式で Docker イメージを構築する。
    Docker イメージの構築プロセス

  4. イメージを docker hub にプッシュする。
    Docker イメージをハブにプッシュする

  5. go-hello-worldという名前のコンテナを起動し、ポート8080を公開する。
    go hello world コンテナの起動

  6. http://127.0.0.1:8080にアクセスして、正常かどうかを確認する。
    コンテナの HTTP 応答の確認

要件

このチャレンジを完了するには、以下が必要です。

  • Dockerfileを使った構築
  • ビルドが完了した後、コンテナが正常に動作し、HTTP 要求に応答できることを確認する
✨ 解答を確認して練習

まとめ

このチャレンジのすべての要素を完了しました。おめでとうございます。これで、アプリケーションイメージを作成して管理する柔軟性が得られました。