しゃちの備忘録

プログラミングを中心とした技術関連の備忘録です(今のところ)

docker備忘録

Dockerについて

個人的な備忘録。 理解が深まったら追記します。

Dockerを知る。

Dockerとは?

docker社が開発したたLXC(Linux Containers)ユーティリティのこと。 上記の背景を持つため、コンテナ技術と言われたりします。

比較対象としてよく、仮想マシンが上がります。

コンテナ技術とは

OS(オペレーションシステム)の中に他のプロセスと隔離したアプリケーション実装環境を構築すること。

要するに、 今使っているPCの中に、今動いているすべてのものから独立した環境を作ろうというものです。

仮想マシンとの比較

仮想マシンでは、現在動かしているOS(ホストOS)内に、個別にOS(ゲストOS)を用意し、その内部にアプリケーション実装環境を構築します。

隔離した環境を作るのは同じですが、プロセスで隔離するか、ゲストOSで隔離するかが異なります。

両者を比較したとき、コンテナはOS単位で構築する必要がないため、必要なリソースが少ないため、構築や軌道がスピーディというメリットがあります。

Dockerによる環境のコード化

Dockerでは、実行したいアプリケーションのミドルウェアのインストールや実行環境設定をコード化して管理します。

つまり、アプリ実行に必要なものはすべて一覧化した上で書き起こす必要があります。

逆を返せば、必要なものはすべて描かれているので、バージョンアップの際など「設定などがどうなっているか」が設定ファイルに集約されていることになります。

このコードを用いることで、複数人で開発するときや、のちの再現の時など、 意図した環境を忠実に構築することができるのです。

要点:Dockerを使うとここがいい!

  • 既存のプロセスから切り離したアプリケーション実装環境を構築できる
  • 仮装技術とは異なり、ゲストOSで切り離しているわけではないため、小リソースで構築、軌道がスピーディ
  • ミドルウェアや環境設定はコード化できるため、設定情報の可視化と、再現性が担保できいる