はじめに
このチャレンジでは、Docker イメージを使って遊びましょう。Docker コンテナイメージは、軽量で独立した実行可能なソフトウェアパッケージであり、アプリケーションを実行するために必要なすべてのもの(コード、ランタイム、システムツール、システムライブラリ、設定)を含んでいます。
Docker イメージを変更する
Docker イメージにはイメージ名とイメージタグが含まれており、イメージ名はリポジトリアドレスとイメージ識別子で構成されています。このサブセクションでは、他人が作成した Docker イメージを自分のリポジトリにプッシュします。
目標
あなたの目標は、dockerhub上のパブリックなubuntuイメージを自分のプライベートリポジトリにプッシュすることです。
結果例
このチャレンジの終了時に達成できることの例を以下に示します。
dockerhubに登録してログインする。

ubuntu:22.10イメージを docker hub からローカルサーバーにダウンロードする。

ubuntu:22.10イメージを自分のリポジトリアドレスに変更する。

- docker hub にサインインする。

- イメージをリモートリポジトリにプッシュする。

要件
このチャレンジを完了するには、以下が必要です。
- Docker エンジンをインストールする。
- Docker コマンドラインに関する知識がある。
- 更新する必要のある既存の Docker イメージ
Web イメージを構築する
私たちは通常、ウェブサイトなどの静的アプリケーションを実行するためにnginxを使用します。このセクションでは、私たち自身のウェブイメージを構築します。
目標
あなたの目標は、Docker コンテナイメージを作成し、その中に単純なウェブアプリケーションをパッケージ化し、そのイメージを使ってコンテナを起動し、適切にアクセス可能にすることです。
結果例
このチャレンジの終了時に達成できることの例を以下に示します。
/home/labex/Codeディレクトリにindex.htmlという新しいファイルを作成し、その内容をhello labexにする。

- 以下の内容を持つ
Dockerfileという新しいファイルを作成する

your_dockerhub_id/web:1.1.0の形式でウェブイメージを構築する。

- 作成したウェブイメージを
dockerhubにプッシュする。

your_dockerhub_id/web:1.1.0でwebという名前のコンテナを起動し、ホストのポート80をマッピングする必要もあります。

curlコマンドを使ってhttp://127.0.0.1にアクセスし、出力がhello labexであることを確認する。

要件
このチャレンジを完了するには、以下が必要です。
Dockerfileを使った構築- ベースイメージを
Nginx:latestと指定する Dockerfileで EXPOSE コマンドを使ってポート80を公開する- ビルドが完了した後、コンテナが正常に動作し、HTTP 要求に応答できることを確認する
マルチステージイメージ構築
コンテナイメージを作成するには、多くの場合、2 つのステップが必要です。
- アプリケーションのビルドをコンパイルする。
- アプリケーションイメージを作成する。
このセクションでは、これら 2 つのステップを 1 つの Docker ファイルにまとめて、マルチステージビルドを実現します。
このチャレンジセクションを完了するために、https://github.com/joker-bai/go-hello-world.gitにHello Worldプロジェクトを用意してあります。
目標
あなたの目標は、マルチステージビルドを使ってコンテナイメージを作成し、そのイメージを使ってコンテナを起動し、適切にアクセス可能にすることです。
結果例
このチャレンジの終了時に達成できることの例を以下に示します。
/home/labex/Codeディレクトリにhello-worldディレクトリを作成する。
このディレクトリに以下の内容を持つ
Dockerfileを作成する
your_dockerhub_id/go-hello-world:1.1.0の形式で Docker イメージを構築する。
イメージを docker hub にプッシュする。

go-hello-worldという名前のコンテナを起動し、ポート8080を公開する。
http://127.0.0.1:8080にアクセスして、正常かどうかを確認する。
要件
このチャレンジを完了するには、以下が必要です。
Dockerfileを使った構築- ビルドが完了した後、コンテナが正常に動作し、HTTP 要求に応答できることを確認する
まとめ
このチャレンジのすべての要素を完了しました。おめでとうございます。これで、アプリケーションイメージを作成して管理する柔軟性が得られました。



