状況
手元で直したアプリを、コンテナレジストリ経由で本番サーバーに出す。手順書では docker build のときにタグを付けない(-t を使わない)。
作業する順番に並べてください。
正答
- 本番サーバーで新しいタグのイメージを pull して起動する
- イメージにレジストリ名とバージョンのタグを付ける
- Dockerfile からイメージを build する
- イメージをレジストリに push する
正しい順番
- Dockerfile からイメージを build する
- イメージにレジストリ名とバージョンのタグを付ける
- イメージをレジストリに push する
- 本番サーバーで新しいタグのイメージを pull して起動する
解説
まず Dockerfile からイメージを build する。docker push は送り先のレジストリをイメージ名(タグ)から決めるので、push の前に registry.example.com/app:1.4.0 のようなタグを付ける必要がある。タグを付けずに push しようとしても、どこへ送るかが決まらない。レジストリに上がってはじめて本番サーバーが pull できるので、本番での起動は最後になる。バージョンのタグを付けておけば、問題があったときに前のタグで起動し直して切り戻せる。
参考: docs.docker.com
この問題を含む Docker のテストを制限時間つきで解く
Dockerクイズへ