Qiitaではわかりやすい記事がたくさんある中で、
簡単にDockerについて書こうと思います。初投稿なので甘めに見てください。
##Dockerとは何か
Dockerとは
コンテナ型仮想環境を作成、実行、管理の3つのプロセスを行うためのプラットフォームである。
→コンテナ型仮想環境とは?
まずコンテナは、みんなが想像する船で運ぶ箱とイメージは一緒。仮想環境とは、その名の通り仮想的な環境のこと。もっとくだけて言うとパソコンの中に、環境を構築したソフトウェアがサーバーの中でひとつ宙に浮いてる。みたいなイメージですかね。それがコンテナみたいにいくつもの箱があって、それを1台のハードウェアで複数あるコンテナごとに動作、実行ができる。それがコンテナ型仮想環境。
なにが便利なのかと言うと、コンテナ型仮想環境(今回はDocker)を使うことで、コンテナの中で作った環境を素早く起動することができて、かつ複数のアプリケーションを実行することができるということ。
最大の利点は、仮想的な環境を作っているので、WindowsやMacなど、異なるOSのPCから同じ条件で中身を動かせると言うこと。OSの違いによる実行環境の不具合がなくなることが嬉しいポイントではないか。
ここでメリットを少しまとめてみる。
##Dockerのメリットは何か
・実行環境を構築しているので、プログラムの起動が早い
・開発環境と本番環境での差をなくせる
・ファイルの共有で同じ環境を立ち上げることができる
・自信のPCの中身を構築するわけではないので、ソフトウェアのインストールなどしなくてもよい
などがある。
##Dockerにまとわりつく用語集
###Dockerイメージ
Dockerイメージとは、コンテナを作成するにあたって必要な「土台」を総じてこう呼ぶ。
コンテナのマトリョシカ的なイメージで、アプリケーションを実行する際に必要な設定やライブラリがまとめて入ってるもの。
これを別のサーバーに渡すとそのまま再現できる。
###Dockerコンテナ
Dockreイメージを作成するとコンテナになる。
このコンテナを実行すると中のDockerイメージに設定した機能を呼び起こせる。
Dockerイメージはあくまでイメージ、よし、実際にやろう!ってなるとコンテナになる。(適当)
###DockerHub
GitHubを想像してもらえるとわかりやすいと思う。
なんかどっかのサイトでまずはDockerHubのユーザー登録をします。みたいなところから入ったので最初は本当にわからなかったけどとりあえず登録した記憶。(騙されやすい)
Dockrerイメージは保存して自由に受け渡しができるのでそれを保存してみんなに配ってるサービス。
様々なユーザーが作ったイメージをDLして保存できるので、実行するだけでコンテナが起動できる、ライブラリと同じ感じかな。
GitHubもクローンして己のリポジトリに保存できるじゃん?そんな感じ。
こういった保管の機能を持ったサービスや場所のことをレジストリというらしい。覚えよう。
###Dockerエンジン
コンテナの仮想化を実際に行うために役割。
車と一緒で、箱だけあっても動力ないと進まないよね、みたいな感じだと思う。
Dockerエンジンによってコンテナ作成や起動や停止や削除などの機能が使える、程度の認識でいいと思う。
###Dockerデーモン
強そう。常駐型のプログラムといわれるもの。
コンテナの作成やDockerイメージの作成など、操作や命令はDockerデーモンが受け取って処理をする。
伝言ゲームの最後の人みたいな位置で、仮想化したソフトウェアの中にいる人。この人がしっかり準備してないと処理を実行してくれない。
もし停止していたら起動しておく必要がある。
###Dockerクライアント
クライアントソフトのこと。
Dockerコマンドをつかって指示を出す人。そのまんま。
##まとめ
とりあえずDockerというなの付く単語の説明だけでしたが、
学習したばかりの浅い知識なので、誤りの箇所もあるかと思います。
その際はキツめに言っていただければと思います。
後日、Dockerコマンドの解説やDockerファイルやホスト型仮想化の違いなど細かい部分もまとめられればいいなと思います。
ありがとうございました。