ときどきAnsible日記

主にITインフラ基盤の自動化に関する事を書いているブログです

DevOpsについて~Dockerができること~

お疲れ様です。伊藤です。

今回もDevOpsについての続きです。まだ読んでない方は前回・前々回の記事(DevOps カテゴリーの記事一覧 - ときどきAnsible日記)を読んでいただくと理解が早いかと。
さて前回はDevOps体制を作るためにAnsibleがコーユー風に使えるよ、というのを記事にしました。簡単に説明しますと、本番環境の設定変更は大変だから簡単にやるためにAnsibleを使って設定変更をしよう!という内容でした。


で、今回はDockerを使ってDevOps体制を目指そうというパターンです。Dockerの場合はAnsibleの時と少々考え方が変わります。なおDockerって何?という方はこちら(Dockerコンテナの概要 - ときどきAnsible日記)を読んでいただけるとありがたいです。
Ansibleの場合は、設定変更を行うのが大変、という前提でした。が、Dockerの場合は設定変更を大変にさせないためにDockerを導入しよう、という考え方になります。
これだけ読んで「なるほど」となる方は基本的ににこれ以降は読む必要はございません。「はぁ?」となった方に向けてこれ以降の記事を書きます。


そもそも設定変更が必要というのは、元になるサーバがあってその上にアプリケーションを乗せる際に、元のサーバの設定を変える必要がある、ということです。それに対してDockerは「設定を含めたアプリケーションの実行環境」となり、Dockerを使ってアプリをリリースする、ということはテスト環境で動作したアプリが入ったコンテナをそのまま本番環境に持っていくということになります。それにより環境変更漏れはなくなり、実際に動いていたものがそのまま本番環境で動くことになります。
f:id:pj_doaa:20180115125542p:plain

これができるのはDockerが持ち運び可能なコンテナであり、コンテナ内でのアプリケーションの動作はどのサーバ上でも保証される、というポータビリティがあるためです。
この技術を使い、今まで煩雑だった設定変更とアプリのリリースを簡易化することができます。

ただし、この実現についても、アプリケーションをDockerコンテナに作り替える必要がある、本番と試験環境を全く同じにする必要がある(IPなどはコンテナ起動時に変えられますが)などのさまざまな課題が発生します。

とりあえず今回はここまです。
お疲れ様でした。