kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

Dockerでつまづいた理由を考えてみた

便利だし、デファクトスタンダードだと思うDockerをいままで使いこなせていなかった理由がいくつかあったのではないのかと思って書いています。

自分の思考の分析をすることで理解を深められたり、次に活かせることが増えると思い、よく自分自身の思考に没頭するようにしています。

自分の実力が追いついていないのは、しょうがないので気にせず、使わなかった理由というのはいくつかあると思っています。

習得に時間をかけていない

なぜDocker習得のために時間をかけなかったのか。

Docker自体は何回かチャレンジしていたのですが、どうもしっくりせず勉強しませんでした。

チャレンジして挫折した理由はなんだろう。

vagrantで満足していた

vagrantでの仮想環境で開発を行うようになったのが、2014年ぐらいからでそれなりにここまでくるのに時間がかかったのが心理的障壁にあるかと。

vagrantでローカルの開発環境を作り、次にansibleでインフラを自動化しようとして時間がかかっていたため、次に移るのがコスト高そうだと思っていたのがあると思いますね。

まぁ、vagrantで満足していたのもあり、不満がないと環境を変えるモチベーションに繋がらないのがあると思います。

windowsで開発

これは言い訳になるけど、Windowsで開発しているとDockerがちゃんと対応できない。という話をよく聞いていたため、Windowsだし勉強してもあまり活用できないのかな。とか調べずに思っていた。

たぶんなんとかなるのか。Hyper-VはProでないとはいっていないとか、WindowsHomeでなく、Proにしてしまえばよかったんだけど、なぜそこにお金をかけなかったのか。とちょっと反省です。

使っているOSで世の中から遅れてしまうところは今後、気をつけていったほうがいいですね。少しのお金で解決できることには投資していきたい。

イメージがvagrantの拡張ぐらいだと思い込んでいた

どうしても仮想環境というイメージが強く、vagrantとの違いを理解せず、OSのイメージでSSHアクセスしていろいろと操作をするものだと思い込んでいたところが強かったです。

Dockerでlamp環境を立ち上げるところまでいけるけど、エラーのときとかSSHアクセスして調べたり設定を変更したりするのにどうすればいいんだろ。とか、ものすごい悩んだことからDockerってなにもの??というイメージになってしまったかな。

今思うと、あまりSSHアクセスとかを気にしない気がしますね。

ひとつのOSに色々入れるイメージから、それぞれのOSがあって、分離していて連携するイメージにもっていければここからは簡単な気がしますね。

開発自体がほぼひとりのため変えるモチベーションがない

ひとりでやっていると、今の環境でもいいかな。とか思ったり、新しくしたほうがいい。というきっかけが少なくなると思います。

最近携わっているプロジェクトに開発で関わる人が増えた結果、いろいろと環境をつくることに時間がかかるようになり、vagrantでは同じ開発を共有できないことがよく理解できたので、vagrantも厳しいかな。とやっと気づけたからかな。

人に関わるといいことってあまりないことが多かったが、こういう意識が変わることには必要ですね。

もっとコミュニケーション力を磨かないと、こういう気づきが少なくなっちゃうのかな。最近の悩みですね。

なぜ使いたいと意識が変わったか

まずDockerをやらなきゃいけないなぁ。という意識や、使えるんじゃないかなという意識に変わったきっかけもいくつかあります。

やっぱりいま使っている環境に不満がでてきたのもありますね。

バイナリとしての意識する

Docker自体のイメージがようやく理解できたこととして、Rebuildfmを聞いていたときですね。

最近Podcastをよく聞いているのですが、RebuildでDockerを「仮想環境というよりかは、それぞれのバイナリとしてイメージするといい」っていうのを聞いたきっかけで、すごくしっくりきた覚えがあります。(Rebuild自体が200話以上あるので、だれの時の話かもう覚えていないのが残念です)

Rebuild.fmはエンジニアとしても面白いですが、雑学としても聞いていてためになります。

ぜひ聞いて見てください。

rebuild.fm

PHPバージョンアップ

PHPバージョンアップをしようと思っており、環境を作り直すのがかなり面倒だな。と思ってすぐにやろうと思えない心理的障壁って嫌だなぁ。とかなり悩んでいたときに、Dockerってちょうどいい気がする。としっくりきました。

バージョンアップって考えたときに、一から環境を作るコストはいまの時代に見合わないと思っています。

Dockerであれば、コンテナのイメージのバージョンを変更するだけで試せます。

HTTPのミドルウェアapache, nginx, H2O)としての切り替えも気軽に試せたりできると思います。

やっぱり開発においてスピードを重視したり、いろいろなことを試す意識をつけることができるのはとてもいいきっかけになると思っています。

いまやろうとしているバージョンアップで活用できればいいと思います。

どこまでできれば満足できるか

たぶん本番に適用できるか、社内の開発環境として広めれれば満足かな。

いままで自分でvagrantCentOSlamp環境を作って、共有していたけど、Dockerで作り直して共有できたら満足すると思います。

いろいろと試している段階はやっぱり辛いですが、面白くもあります。

楽しんで開発していきます。