##はじめに
Docker...あぁクジラが書いてあってコンテナがなんとやらのすげーやつね!
この程度の知識しかなく、かなり危機感を感じたので勉強することにしました。
書いて覚えるタイプなのと備忘録ってことで記事にしてみたいと思います。
##Dockerってなに?
- 次世代仮想化技術
- アプリケーションをコンテナにパッケージングして使う
- 同じ環境を共有することが容易(新規ローカル環境の構築とか楽)らしい
- 仮想化技術っていってもvmWareやvirtualBoxなどとは別物
##実際何がいいのか
- Dockerfileでインフラをコード化して管理することができる。
- ゲストOSがないのでオーバーヘッドが少ない(負荷が低い)
上記のようにほかの仮想化ソフトとは違いゲストOSが存在せず、DockerEngine上にコンテナなるものが存在しています。
このコンテナがアプリケーションを実行するための空間です。
通常はOS上に1つの空間が存在していますが、コンテナ型仮想環境では1つのOS上に複数のユーザ空間を用意することができます。
さらにdockerはコンテナの内容をDockerfileなるものにコードとして記述して管理できる仕組みがあるようです。
これによってコンテナ内のOSやライブラリ、環境変数とかをパッケージ化したり保存したり移動したり..したりしたりできるようです(・ω・)マジカ
##Dockerイメージとコンテナ
Dockerにはイメージというものがあり実行環境などをパッケージングしたものがこれにあたり、これらをDockerEngine上で起動したものがコンテナになる。
イメージは起動したコンテナ内で必要なアプリをインストールしたり、各設定を変更したりしたものを保存することで新しいイメージとして使用、配布することが可能になります。
イメージ層のレイヤは読み取り専用になっており、変更することはできません。
レイヤは一つのものをインストールすることでレイヤが積み重なっていきます。
イメージ空コンテナを起動して新しくミドルウェアなどをインストールすることで新しくレイヤを積み重ねることができます。
このコンテナから新しく作成(commit)することでイメージを新しく作成することもできます。その際は図の左のイメージにコンテナレイヤーで追加したものレイヤー3に重なったイメージができあがります。
##Dockerfile
#####Dockerfileとは
DockerイメージはDockerHubから取得(pull)することもできますが、自分でイメージを作成する場合はDockerfileを作成しそれを使用してイメージを作成することができます。
Dockerfileにはベースにするイメージに対して実行する内容を記載します。
##まとめ
- Dockerはコンテナ型の仮想化技術
- ゲストOSが存在せず、各環境をコンテナとして扱う
- コンテナはイメージを起動することで使うことができ、コンテナから新たにイメージを作成することもできる
- イメージを作成するにはDockerfileを作成しそれをもとにイメージを作成する
初回はDockerについて基本的なことをメモ程度に書かせて頂きました。
次回は実際にDockerを使用して開発環境を構築した記事を書いてみたいと思います。