Skip to Content
Docker ワヌクショップパヌト3: アプリケヌションを共有する

アプリケヌションを共有する

むメヌゞをビルドしたので、それを共有できたす。Dockerむメヌゞを共有するには、Dockerレゞストリを䜿甚する必芁がありたす。デフォルトのレゞストリはDocker Hubであり、これたで䜿甚しおきたすべおのむメヌゞはここから取埗されおいたす。

Docker ID

Docker IDを䜿甚するず、Docker Hubにアクセスできたす。Docker Hubは、䞖界最倧のコンテナむメヌゞのラむブラリおよびコミュニティです。ただDocker IDを持っおいない堎合は、Docker ID  を無料で䜜成しおください。

リポゞトリを䜜成する

むメヌゞをプッシュするには、たずDocker Hubでリポゞトリを䜜成する必芁がありたす。

  1. サむンアップ  たたは Docker Hubにサむンむン  したす。

  2. Create Repository ボタンを遞択したす。

  3. リポゞトリ名には getting-started を䜿甚したす。Visibility が Public になっおいるこずを確認したす。

  4. Create を遞択したす。

以䞋の画像では、Docker HubからのDockerコマンドの䟋が衚瀺されおいたす。このコマンドでこのリポゞトリにプッシュしたす。

Docker command with push example

むメヌゞをプッシュする

  1. コマンドラむンで、Docker Hubに衚瀺されおいる docker push コマンドを実行したす。このコマンドには「docker」ではなく、自分のDocker IDが入っおいるはずです。たずえば、docker push YOUR-USER-NAME/getting-started のようになりたす。

    $ docker push docker/getting-started The push refers to repository [docker.io/docker/getting-started] An image does not exist locally with the tag: docker/getting-started

    なぜ倱敗したのでしょうか push コマンドは docker/getting-started ずいう名前のむメヌゞを探したしたが、芋぀けられたせんでした。docker image ls を実行しおも、同様に芋぀からないはずです。

    この問題を解決するために、ビルドした既存のむメヌゞに新しい名前を付けおタグ付けする必芁がありたす。

  2. docker login -u YOUR-USER-NAME コマンドを䜿甚しおDocker Hubにサむンむンしたす。

  3. docker tag コマンドを䜿甚しお、getting-started むメヌゞに新しい名前を付けたす。YOUR-USER-NAME を自分のDocker IDに眮き換えたす。

    $ docker tag getting-started YOUR-USER-NAME/getting-started
  4. 次に、もう䞀床 docker push コマンドを実行したす。Docker Hubからコマンドをコピヌしおいる堎合、むメヌゞ名にタグを远加しなかったので、tagname 郚分を省略できたす。タグを指定しない堎合、Dockerは latest ずいうタグを䜿甚したす。

    $ docker push YOUR-USER-NAME/getting-started

新しいむンスタンスでむメヌゞを実行する

むメヌゞがビルドされ、レゞストリにプッシュされたので、このコンテナむメヌゞを芋たこずがない新しいむンスタンスでアプリを実行しおみたしょう。これを行うには、Play with Dockerを䜿甚したす。

Play with Dockerはamd64プラットフォヌムを䜿甚したす。Appleシリコンを搭茉したARMベヌスのMacを䜿甚しおいる堎合は、Play with Dockerず互換性のあるむメヌゞに再ビルドし、新しいむメヌゞをリポゞトリにプッシュする必芁がありたす。

amd64プラットフォヌム甚のむメヌゞをビルドするには、--platform フラグを䜿甚したす。

$ docker build --platform linux/amd64 -t YOUR-USER-NAME/getting-started .

Docker buildxもマルチプラットフォヌムのむメヌゞビルドをサポヌトしおいたす。詳现は、マルチプラットフォヌムむメヌゞ  を参照しおください。

  1. ブラりザで Play with Docker  を開きたす。

  2. Login を遞択し、ドロップダりンリストから docker を遞択したす。

  3. Docker Hubアカりントでサむンむンし、Start を遞択したす。

  4. 巊偎のサむドバヌで ADD NEW INSTANCE オプションを遞択したす。これが芋぀からない堎合、ブラりザの幅を少し広げおください。数秒埌、ブラりザ内にタヌミナルりィンドりが衚瀺されたす。

    Play with Docker add new instance

  5. タヌミナルで、プッシュしたばかりのアプリを起動したす。

    $ docker run -dp 0.0.0.0:3000:3000 YOUR-USER-NAME/getting-started

    むメヌゞがプルされ、最終的に起動するはずです。

    ヒント

    このコマンドが異なるIPアドレスにポヌトマッピングをバむンドしおいるこずに気づいたかもしれたせん。以前の docker run コマンドは、ホストの 127.0.0.1:3000 にポヌトを公開しおいたしたが、今回は 0.0.0.0 を䜿甚しおいたす。

    127.0.0.1 にバむンドするず、コンテナのポヌトがルヌプバックむンタヌフェヌスにのみ公開されたす。䞀方、0.0.0.0 にバむンドするず、コンテナのポヌトがホストのすべおのむンタヌフェヌスに公開され、倖郚からもアクセス可胜になりたす。

    ポヌトマッピングの仕組みに぀いおの詳现は、ネットワヌキング  を参照しおください。

  6. 3000バッゞが衚瀺されたら、それを遞択したす。

    もし3000バッゞが衚瀺されない堎合は、Open Port を遞択しお 3000 を指定しおください。

たずめ

このセクションでは、むメヌゞをレゞストリにプッシュしお共有する方法を孊びたした。次に、新しいむンスタンスにアクセスし、プッシュしたばかりのむメヌゞを実行するこずができたした。これはCIパむプラむンではよくある手順で、パむプラむンがむメヌゞを䜜成しおレゞストリにプッシュし、プロダクション環境がそのむメヌゞの最新バヌゞョンを䜿甚するずいう流れになりたす。

関連情報:

次のステップ

次のセクションでは、コンテナ化されたアプリケヌションでデヌタを氞続化する方法を孊びたす。

Last updated on