Dockerについて初心者なりにわかったことを書いていこうと思う。
通常、プログラミングでアプリケーションなどを作ったときはそのアプリケーションを他のサーバーや環境で動かそうと思ったら、そのアプリケーションで使われているプログラミング言語やデータベースのMySQLなどをインストールしないとアプリケーションは動かない。
しかし!Dockerを使うとそんなめんどくさいインストールとかとはおさらばできるのだ!
・まず、Dockerとはコンテナ型仮想環境を作成・実行・管理するためのプラットフォームのこと。
・コンテナ型仮想環境とはアプリケーションとその実行環境を1つにまとめあげて動作させる技術のこと
で、簡単にいうとコンテナはアプリケーションに必要な物(プログラミング言語やその他ツール)をまとめた箱のこと。
Dockerのイメージ図
引用:https://o2mamiblog.com/docker-beginner-1
図のようにコンテナを起動する手順的には以下のとおりである。
1. まず、クライアント(Dockerクライアント)がコマンド(指示書)を打つ
2.それが、Dockerデーモンに渡され、渡されたデーモンさんがその指示書を受け付けて、Docker機能に命令を出す。(例:DockerイメージやDockerコンテナの作成など)
3.DockerHubなどのリポジトリから公式のイメージを取得(pull)。(簡単に言えば、ポケモンゲームのカセット)
4.(ここからは例を持ち出して説明)持ってきたポケモンのカセット(イメージ 1)をローカルイメージという場所に保存。
5.DockerFileにポケモンのカセットを「In!」してチョーエキサイティング(保存)する。
6.そのポケモンのカセットを改造したいなら何か追加して(なければそのままで)「自作のイメージ」を作成する。(build)(例:railsなどのフレームワークだったり、ラジバンダリー)
7.これまでで作ったイメージをもとにコンテナ(仮想環境)を作成する。(create)
8.コンテナを起動する。(start)
Dockerのメリット
・1台のサーバー上に複数のアプリケーション実行環境(Dockerコンテナ)を作成・利用できる。※サーバーの有効活用や、サーバー機の節約が可能
・アプリケーション実行環境(Dockerコンテナ)の他サーバーなどへの移転、他ユーザーとの共有※Dockerコンテナの移転や共有は複雑で手間のかかる操作を必要とせず、簡単に実行可能
・Dockerコンテナでアプリケーションの開発環境を作成し、インターネット上で他エンジニアと簡単に共有できる