Dockerイメージをpullした後にbashを起動して色々と手を加える(docker commitを使う)ことはできますが、あまりいい方法ではありません.

イメージファイルに手で加える修正が複雑になるともはやどのようにイメージが作られたのかわからなくなり、メンテナビリティが低下してしまいます.

特に、誰かのイメージを拡張して使っている場合、独自にcommitしていると、オリジナルのイメージに入った更新を取り込むには「オリジナルのイメージ再取得 -> 独自に行ったcommitを再度行う」といった操作が必要になってしまいます.

そこで、pullしたイメージはDockerfileを更新することによって拡張していくべきです.

1. Dockerfileの作成

まず、作成したいイメージ用のディレクトリを作成します.

ここでは、Apache Spark用のイメージ(sparkapps)を作成する例を示します.

Dockerfileというファイル名は変更しないでください.

ここから先の操作は、Dockerfileが存在しているディレクトリで行います.

ここでsequenceiqのSpark用Dockerfileの内容をDockerfileにコピペします.

内容は以下の通り.

 

2.ビルド

ここまでできれば、Dockerイメージをビルドできます.

* Spark用として紹介したDockerfileはビルド時にローカルファイルをADDしています.ビルド前に、yarn-remote-clientディレクトリを用意する必要があります.

 

-t でイメージのタグ名を設定しています.必要に応じて変更してください.

ポイントは、一番最後のピリオド(.)です.現在のディレクトリにDockerfileが無い場合は失敗するので、ピリオドの代わりにDockerfileの存在するパスを指定します.

 

ビルドに必要なファイル一式はGit等で管理・シェアするのが主流のようです.

 

3.その他

dockerのイメージに直接手を入れすぎた場合、Dockerfileをどのように更新すればいいのかわからなくなるかと思います.

そのような場合は以下のコマンドが便利です.

  • Dockerイメージのコミット履歴を見るコマンド

  • イメージ上で行われた操作を見るコマンド

 

Leave a Reply

Your email address will not be published. Required fields are marked *