docker備忘録 その2
前回 の記事でDockerが起動するところまで持っていきました。
実はもうもろもろ動いている状態なので、そこまでの軌跡を書こうと思っていたのですが。
前回からかなり日が経っているので何をやったか忘れました!
とはいえ、特にハマることもなくできたのでコマンドさえわかれば困ることもないかと思います。
個人的に面倒だったのはDockerfileの作成ですね。
ということでDockerfileについて話していきます。
Dockerfileってなに?
誤解を招く可能性があることを承知で書きますが、Dockerfileとは「コンテナイメージの設計書」です。
Docker上で動くコンテナはコンテナイメージから生成されます。
このコンテナイメージがどんな設計で、どんなパーツを利用して構築されたかを示すのがDockerfileです。
また、この設計書さえあればどんな環境でも同様のコンテナイメージが何度でも作れます!
書式の細かいところは他のブログ等にお任せ!
Dockerfile の作り方
今回のブログで書きたいのは、書式とか文法ではなく「どうやって自分好みのDockerfileを作るか」というところ。
私は、Dockerfileにガリガリ書く→ビルド→エラーが出たところを修正→ビルド というTry&Errorでやったのですが、大変非効率的だったので効率的なやり方を紹介していきます。
- ベースのOSを選んだらそのOSでコンテナ起動
- そのコンテナ上で環境を構築していく
- なんとなく以下のような感じで分けてやったほうがいいです。
- install系
- 環境設定系
- その他細かいこと
- なんとなく以下のような感じで分けてやったほうがいいです。
- 成功したらそのコマンドをどこかにメモしておく
- ついでに環境変数や実行ユーザなどもメモしておくとその後のトラブルシュートに役立つかも
- ある程度成功したらそこまでをDockerfileに書く
- ビルドしてみる
- 成功したらそのイメージでコンテナを作成して2に戻る
単純で泥臭いですが、おそらく詰まることが最も少ないやり方です。
2 を一度にたくさんやると失敗したときの手戻りが大変なので、ちょっとずつやるといいと思います。
また、「今どのユーザが実行しているか」「環境変数は存在するか」というところを意識しながらDockerfileを作成すると失敗しても原因がわかりやすいかと。
まとめ
もっとDockerのことを書こうと思っていたのですが、時が経つと忘れるものですね・・・
ただ、そんなにDockerそのものには苦しんでいないのでこんなものかなぁと。