##はじめ
Docker用語の理解の薄さから調べていても記事の内容が理解できないことが多々あったので、一度整理してみることにしました。
もし何か記述ミスがあった場合はご教授していただけると幸いです。
##Dockerとは
Dockerとは開発環境をコンテナ化(パッケージ化)することで開発環境の共有や環境構築を楽にしてくれるサービスです。
同じ開発環境でもMacやWindowsのようにPCのOSが異なると表示されるデータが異なる時があるのですが、Dockerを使うと表示されるデータがOSの違いを問わず統一されます。
また、パッケージ化することでPCの容量の節約にもなります。
##Docker デーモン
Dockerデーモンとはコマンドを受け取り処理するサーバのことです。クライアントのpcから送られてきたコマンド(docker psとか)をDockerデーモンが裏で処理をしてくれています。
##Dockerfile
Dockerfileとは↓のImageを自作する時に使うファイルのことです。
##Image
Imageはコンテナを作るための材料のことです。これはDocker HubというDockerが公式サイトからpull(ダウンロード)して作ることもできるし、自分で手作りすることもできます。
ImageとしてはnginxやApacheといったwebサーバ、mysqlやoracle database、Ruby on railsやDjangoといったフレームワークなどの開発に必要なものがImageとしてはあります。
##コンテナ
コンテナ(Container)とは隔離された開発環境のことです。
そしてこのコンテナはImageから作られ、PCの要領などがある限り、何個でも立ち上げることができます。
Dockerfile、Image、コンテナの関係を料理に例えると
DockerfileがレシピでImageが料理の材料、コンテナが料理そのものみたいな感じかと思います。
##Docker Hub
Docker HubとはDocker版のGit Hubのような物で、Imageやコンテナをクラウド上で共有できます。既に公開されているコンテナをpull(ダウンロード)して簡単に開発環境を作ることもできます。
##Docker Compose
Docker Composeとは複数のコンテナを使用するようなアプリケーションの環境を作るときに複数個のコンテナを連携してくれるツールです。
##Kubernetes
KubernetesとはDocker Composeよりも、より複雑なアプリケーション(よりたくさんのコンテナを使う様な)の環境を作るときに使うツールです。
##終わり
現在、AWSにポートフォリオをデプロイしているエンジニア志望の者ですが、自分がこれまで学んだSQLやAWSなどのサービス開発関係の勉強の中で一番Dockerの理解が難しかったです…。一度udemyでハンズオン形式の講座を受けて、2つのアプリケーションをDockerを使って開発しましたが、動画教材ではなく書籍でもじっくり勉強する必要があるなと感じました。