Share feedback
Answers are generated based on the documentation.

アプリケーションの共有

ここまでにイメージをビルドしたので、それを共有していきます。 Docker イメージを共有するためには Docker レジストリを利用することになります。 デフォルトのリポジトリは Docker Hub です。 これはここまでに利用してきたイメージがすべて収容されている場所です。

Docker ID

Docker ID は Docker Hub にアクセスするためのものです。 Docker Hub は世界でも最大規模を誇るコンテナーイメージのライブラリおよびコミュニティです。 無料の Docker ID をまだ取得していない場合は、作成しておいてください。

リポジトリの生成

イメージをプッシュするためには、あらかじめ Docker Hub 上にリポジトリを生成しておくことが必要です。

  1. Docker Hubサインアップ またはサインインします。

  2. Create Repository (リポジトリ生成) ボタンをクリックします。

  3. リポジトリ名は getting-started とします。 VisibilityPublic とします。

  4. Create (生成) をクリックします。

以下の画像から、Docker Hub が示す Docker コマンドを見ることができます。 このコマンドはリポジトリへのプッシュを行うものです。

プッシュを行う Docker コマンド例

イメージのプッシュ

Docker Hub にイメージをプッシュしていきます。

  1. コマンドラインから以下を実行します。

    docker push docker/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
    

    このエラーは起こるべくして起きます。 それはまだイメージへのタグづけがまだ正しく行われていないためです。 Docker は docker/getting-started という名前のイメージを探します。 しかし今あるローカルイメージの名前は、まだ getting-started です。

    これを確認するために以下を実行します。

    docker image ls
    
  2. これを解決するには、まず docker login YOUR-USER-NAME を実行して、ご自身の Docker ID を使った 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
    

新たなインスタンス上でのイメージ実行

イメージをビルドしそれをレジストリにプッシュしました。 これにより Docker をインストールしているマシンであれば、どこでもアプリケーションを実行できるようになりました。 別のコンピューターやクラウドインスタンス上において、このイメージをプルして実行してみてください。

まとめ

本節ではイメージを共有する方法として、レジストリにイメージをプッシュする方法を学びました。 そして新たなインスタンスを使って、プッシュしたばかりのイメージを実行しました。 CI パイプラインではごく普通のことであり、そこではイメージを生成しレジストリにプッシュします。 そして本番環境であればイメージの最新版を利用します。

関連情報

次のステップ

次節では、コンテナー化したアプリケーション内のデータを保存する方法について学びます。

DB への保存