こんにちは。くろしばです。
冬になりツーリング頻度も下げ目なので久しぶりにweb記事。
ちかごろ流行りのdocker。
正直レガシーなものばっかり触っていたら置いてかれちゃいました!
さすがにまずいかなと思いお勉強したのですが、自分のように大して時間をかけずに最低限のことだけ知っておこうといった人向けに
dockerとはなんぞや?な内容をかいてみました。
専門書やQiitaでお勉強する前に読んでもらえればと思います!
スポンサーリンク
dockerってなんだ?
アプリケーションを動かすためのインフラ環境っていう意味でいうとVMとかとあまり変わらない立ち位置ともとることができるのですが、
コンテナ → 技術の名前。
docker → コンテナ技術を用いた構築方法の一つ。
似ている例だと
IDE → 開発するのに役立つ機能てんこ盛りのエディタ
Eclipse → IDEの一種
まあこんなノリのものだと思ってもらえればいいと思います。
Infrastructure as Code
直訳すると「コードとしてのインフラ」
インフラをコードとして扱っちゃおうぜ!ってことです('ω')
dockerでのアプリケーション実行環境の実現の意義をクソほど簡単にいうのであれば
インフラ環境の考慮が楽ちんになること。
コンテナ技術が流行った要因としてインフラ環境依存によるバグを防止することができるという点が挙げられます。
なんで?(_;
って感じだと思います。
アプリケーションエンジニアが作成するのはアプリケーションのビジネスロジックが書かれたプログラム部分。
多くのアプリエンジニアの守備範囲として、ネットワーク、OS、apacheなどの設定は範囲外である場合が多いです。
そ・れ・を!
一緒に本番環境まで持ってちゃおう!
みたいなノリで実現することができるのがdockerってわけです。
dockerを使う場合、ビジネスロジック、インフラ情報をひとかたまりにしたイメージファイルを、それぞれの環境にぽいっと持っていくだけで
インフラ環境とアプリケーションがセットになった状態のコンテナがぎゅいーん!と起動するんです。
ちなみにインフラ情報を記載するための専用ファイルをDockerファイルっていいます。
ここで肝になるのはイメージファイルからコンテナが起動するってところです(*´ω`)
ちなみにこのイメージファイルをDockerイメージって呼びます。
図解する
かるく図解してみます。
dockerの仕組み
この色のついていないコンテナはまだ存在しないものです。
イメージファイルからコンテナを起動すると、OS上の他のプロセスからは隔離された環境を立ち上げることができます。
見てわかるように、普通なら環境にビルドするのはアプリケーションのロジックのプログラム群だけですが、/home/配下以外の領域のモジュールも同時にデプロイするようなイメージです。
実際にはDockerファイルに取得先などを記載するので実態をすべてデプロイというわけではないですが。
deploy
こちらが先ほどのひとかたまりのイメージからコンテナがぎゅいーん!と起動するところです。
こうすることでアプリケーションエンジニアは、
やっべー(´゚д゚`)!!!
apacheの設定依頼するの忘れてたからうごかないー!
なんてことも防止することもできます。
オーケストレーションツール
なんすかそれ音楽ですか(+o+)??
と僕も思いました。
オーケストレーションツールというのはコンテナ環境を、いじいじ操作するのに使うツールの総称です。
代表的な例に、Googleが設計した
Kubernetes、のほか、Rancher、Docker Swarmなどがありますが、Kubernetesだけ覚えておけばOKでしょう。
RancherはKubernetesのインストールをサポートする機能がついていてどちらも利用するというシーンもありますが。
ちなみにKubernetesは「くーばねてぃす」「くばねてぃす」「くばねてす」とか読みます。
僕の周りでは「くーばねてぃす」と呼ばれていますね。
最近ははしょられてk8(くーば)なんて呼ばれています。
まとめ
クラウド(AWSとか)とオンプレ(独自で企業が契約してるデータセンター)の環境が混在している昨今です。
正直クラウドが便利になりすぎて、そもそもの仕組みを理解しなくても構わない時代に突入するんですかね。
だってAWSが当たり前の時代にエンジニアを始めたとしたらオンプレのVMの仕組みなんて考える必要ないですよね。
だってボタン押したらサーバ使えちゃうんだもん(+o+)
アプリケーションエンジニアがサービス開発に集中できる世界に向かっているとは言いますが、
インフラの知識がほとんどなくても困らない時代がすぐそこまで来ているんですかね。
ほんと数年の移り変わりが早いですね、この業界は。
ともあれ、この業界にいると時代についていく気持ちがないと人生は置いてけぼりにされて文句を垂れるだけのおっさんになってしまうことを痛感します。
dockerの普及でアプリケーションエンジニアに求められる知識がどのように変わっていくのかはわかりませんが、
1歩先の時代で何が必要とされていくのか、きちんと判断して学び続けなくてはなりませんね。
ではでは( *`ω´)ノ
スポンサーリンク