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 要求に応答できることを確認する

まとめ

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

✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習