仕事中の問題と解決メモ。

最近はPythonとGoogle Cloud Platformがメイン。株式会社ビズオーシャンで企画と開発運用、データ活用とか。https://github.com/uyamazak/

Dockerのイメージから過去のソースコード等を救出する

DockerとGKE(Google Container Engine)を開発に使うようになってから、gitだけでなく、Dockerのイメージもバージョンで保存されるようになった。

ソースコードを変更後、動作確認のためにDockerイメージをビルドし直すことが多いので、頻度としては、gitへのコミットよりも、Dockerのビルドの方が多い。

そのため、gitにコミットする前に、ファイルを消してしまった、変更してしまった場合、Dockerのイメージからファイルを救出することができる。

私の普段の開発の流れは下記のよう。
まだ自動テスト、自動デプロイが必要な規模にはなってないので、最後2つの順番は変わったりする。

  1. ソースコードの追加、修正
  2. Dockerイメージのビルド
  3. 開発環境でテスト
  4. gitコミット
  5. 本番環境へアップ


そして、月曜午前中に出社して、寝ぼけてコミット前なのに「git resetしちゃった!」というとき。

落ち着いて下記のようなコマンドを叩く。
grepでなくてもdocker imagesコマンドのfilterなどを使ってもいい

>>% sudo docker images | grep arms
asia.gcr.io/oceanus-dev/arms latest 0f8530abb371 5 weeks ago 278.5 MB
asia.gcr.io/oceanus-dev/arms v20161207-01 0f8530abb371 5 weeks ago 278.5 MB
asia.gcr.io/oceanus-dev/arms v20161124-01 f302e57a0ebb 7 weeks ago 278.5 MB
asia.gcr.io/oceanus-dev/arms v20161115-02 7f2fe84bb244 8 weeks ago 278.5 MB
asia.gcr.io/oceanus-dev/arms v20161115-01 be7d629f9186 8 weeks ago 278.5 MB
asia.gcr.io/oceanus-dev/arms v20161111-02 75ce674e8eed 9 weeks ago 278.5 MB
asia.gcr.io/oceanus-dev/arms v20161111-01 4bbecf26285f 9 weeks ago 278.6 MB
asia.gcr.io/oceanus-dev/arms v20161107-alpine03 b21bdc36165b 9 weeks ago 278.6 MB
asia.gcr.io/oceanus-dev/arms v20161107-alpine01 6a890b567b5a 10 weeks ago 278.6 MB
asia.gcr.io/oceanus-dev/arms v20161107-alpine02 6a890b567b5a 10 weeks ago 278.6 MB