tech

Docker環境構築の雑記

7月から会社の関連で急遽Dockerを利用することになった。
いろいろはまったりしたので、あとで見返すためにもはまった内容と解決方法を記録したいと思います。
書いていたら思ったより長くなったので何回かに分けたいと思います。

この投稿が参考になるかもしれない人(対象読者)

・環境構築してめちゃくちゃな手順書を渡されて悩んでいる方
・これから手順書を作ろうと思っている方
・プロキシ環境課のDockerの立ち上げを行おうとしている方

他人が作った環境の再現は面倒

走り書きで手順書作ってはいけないのです

他人が構築した環境を再現することはこれまでの経験上、最も面倒なことの一つだと考えています。
特に、走り書きの構築手順などを基にする場合は特に。
手順が確立しているものは増しで、実験扱いで作ったものはたいていは、作成者が試行錯誤した結果であり手順書としてはまともではありません。
ログを全部載せていればまだましな方で、本人しかわからない略語であったり、不要と判断してわざと記載しなかった手順が重要であることがあります。
そのような状況の中、手順(走り書き)を見て同じ環境を作成するのは大変な労力を伴います。
今回も久々にそんな状況にあたりまして、頭の整理や同じような問題当たっている方の参考になるかも、しれないので記録します。

Dockerは素人です

初めに断っておきますと、筆者はDockerの基礎を理解している人間ではありません。
とりあえず実験環境として前任者がDockerで構築したシステムを可能な限り早く同様に立ち上げろ、という指令の元、対処を行いました。
そのため、エラーに当たるたびDockerの構造上どうなっているかを都度調べながら対応する、といった動きを取っています。
基礎を知っている方やあとから自分で考えるとより良い解があったとは思いますが、何も知らない初心者が当たった困難をそのまま書いておこうと思います。
そのほうが臨場感あるかなと。
それでいってみましょう

Dockerで実験環境を作ってよ、なるはやで

お呼び出しと業務命令

7月冒頭、これまでと別の業務に参画することになり上司が呼び出しを受けました。
上司「実験環境を作ってほしいんだ。商用のサービスで使う実験で利用するからなるべく早くに。」
筆者「承知しました。具体的にはどういったものですか。」
上司「Dockerの上にのせるものなんだ。前任が手順書を残しているからそれで作ってくれないか。」
筆者「(手順書あるのか、なら楽できるかな)わかりました」

そして出てくる冒頭の走り書き。
筆者「すいません。手順書というか走り書きなんですけど。」
上司「え、そうなの。悪いけどそれしかないと聞いているからがんばって。後輩くんにも途中まで頼んどいたから経過を聞いてね」
え。

後輩が進めていることを期待しつつもどうなっているかなぁ。
筆者「後輩くん、実験環境を作っているらしいのだけど、どこまで進んでいるか教えてもらえませんか」
後輩「すいません。なんかエラーが出てましてとまってます。プロキシのせいだと思うんですけど」
出たよ、プロキシ。これは長くなるかもな、、、

いつものプロキシ

さて、後輩はお手上げになってしまったようです。対応は筆者が引き継ぐことになりました。
しかし筆者もDockerは知識として知っているだけで、操作した経験はありません。
納期も早めらしいので、なるべく効率よくトラブルシュートする必要があります。
そこへ出てきたプロキシトラブル。そうです、社内プロキシです。
割と多くの方は環境構築で悩まれることが多いのではないでしょうか。
筆者の所属する会社は、幸いなことに実験環境の構築にインターネット接続が許されています。
しかしながら、途中の経路上に存在するプロキシが毎回悪さをすることが多く、かつて構築した環境もこれが失敗原因となっていたことがありました。

さらにヒアリングを続けます
筆者「わたしもDockerの経験がないのだけれど、どこまでできているか教えてくれるかな」
後輩「(走り書きを指さし)この部分で止まるんです。やってみますね」
むしろこの走り書きでよくここまで進めてきたな、と感心しました。
コマンドは書いてあるものの、何が正解か一切書いていない。

今回止まっているのは、docker-composeコマンドです。
素人なので調べると、コンテナの生成コマンドと理解しました。
(この辺はあとおいですが体系だてて勉強しようと思います。)

本当にプロキシか、それとも別か

プロキシが原因ということで、Dokcerのプロキシ設定の方法が原因かな、プロキシ設定方法を見直してみるかとあたりを付けました。
同時にエラーを読んでいくと、違和感が。
何かDockerが立ち上がっていないように見えます。
どちらかというとこれが根本原因なのでは、と思いDockerの起動コマンドを調べて実行します。
すると失敗。
え、失敗するの?立ち上げ自体に。
より根本的なのか、はたまた別事象なのか、解決しなければいけない事象が増えた瞬間でした。

あとがき

今回はどちらかというと、手順書がいい加減な場合に渡された側の苦労がどんなものか、を書いてみました。
これから手順を作る方は、ぜひとも読み手の気持ちになって記載いただきたいと思います。
筆者も常日頃から心がけて手順作ってます。

-tech
-,