Dockerってなに?なんで使うの?

プログラミングの学習をしている方で「Dokcer」という言葉を聞いたことがある方は多いのではないでしょうか?

しょうゆ
しょうゆ

ドットインストールでPHPを学習していた時に、しれーっとDockerが出てきて『は?😇』ってなった記憶があるぞ😇

この記事では、Dockerとは何なのか?ということについて、なるべくわかりやすく解説します。

この記事から学べる事
  • Dokcerの概要がわかる
  • コンテナの概要がわかる

 

Dockerってなに?

結論から言いますと、Dockerはコンテナを利用するためのソフトフェアです。

しょうゆ
しょうゆ

いや、そもそも「コンテナ」ってなんだよ?😇

コンテナ技術を調べると、「仮想化サーバーがあーだこーだ」っといった説明がめっちゃ出てきます。

…が、とりあえずそれは放っておきましょう!笑

ざっくりと説明すると『互いに影響を与えない独立した実行環境を構築する技術』です。

 

しょうゆ
しょうゆ

・・・???😇

 

と、言われてもやっぱりピンときませんよね?笑

もう少しかみ砕いて、具体例を交えながら説明していきます。

 

複数のシステムが混在するときの問題点

1つのサーバで複数のシステムやアプリケーションが混在している場合、互いに影響を与えないように調整が必要となるケースが多々あります。

例えば1つのサーバー内にシステムAとシステムBが混在していたとしましょう。

このシステムAとシステムBは共通のワークフレームNを使っています。

ワークフレームとは?

アプリケーションやシステムを開発するために必要な機能が、あらかじめ用意された実行環境のことです。

ここで、システムAの都合でワークフレームNをアップデートしたとしましょう。

すると、共通のフレームワークNを使っているシステムBは、フレームワークNのアップデートにより動かなくなる可能性があります。

Docker解説
複数のシステムが実行環境を共有する場合の例
しょうゆ
しょうゆ

複数のシステムが混在すると、共通の実行環境の変化がお互いのシステムに影響を与えてしまうんやね…😥

 

独立した実行環境を構築する

このような実行環境の競合を解決するのが「コンテナ」です。

コンテナを利用することで、互いに影響を与えない独立した実行環境を構築することができます。

つまり、システムAにはシステムA専用の実行環境(コンテナA)を、システムBにはシステムB専用の実行環境(コンテナB)を構築することができるのです。

そして、このコンテナAとコンテナBは独立した実行環境であるので、互いに影響を与えません。

そのため、コンテナA内のワークフレームNをアップデートしても、コンテナB内のワークフレームNには影響しないため、実行環境に左右されることなくシステムを開発することできます。

コンテナの解説
コンテナを利用した実行環境の構築例
しょうゆ
しょうゆ

なるほど!これなら複数のシステムが混在していても、お互いの実行環境を気にせずに開発が進められるってことやね!😊

このコンテナを利用するために使うソフトフェアがDocker です。

OSにDokcerをインストールすることでコンテナの利用ができるようになります。

DockerはLinux上で動作するソフトフェアです。正確には「Docker Engine」をインストールします。WindowsやMacでも「Docker Desktop」というソフトを利用する方法があります。  

なんでDockerを使うの?

コンテナを利用するにはDockerを使えばいいということが分かったかと思います。

しょうゆ
しょうゆ

コンテナって言っても、実行環境は構築しなくちゃいけないんでしょ…?🤔

環境構築をしたことがある人は、コンテナを構築することが難しいと感じるかもしれません。

しかし、Dockerを使えば簡単に実行環境を構築することができます。

イメージが提供されている

イメージとは『あらかじめ実行環境が用意されているコンテナの元』のことです。

イメージは「Docker Hub」というWebサービス上に公開されており、だれでも無料で使うことができます。

先ほどの例で言いますと、システムAの実行環境(コンテナA)を自分で構築せずとも「Docker Hub」からイメージを取得すれば、コンテナAを構築することができます。

しょうゆ
しょうゆ

自分で実行環境を構築する手間が省けるのはめちゃくちゃうれしいっすわぁ…🤤

もちろんイメージを自分で作成知ることも可能ですし、作成したイメージを「Docker Hub」に公開することも可能です。

他のサーバへの複製が簡単

システムを複数人で開発する場合を考えてみましょう。

その場合、それぞれのパソコンの環境はもちろん異なります。

しかし、Docker を使えば実行環境の構築に必要なイメージをDocker Hubから簡単に取得することが可能です。

しょうゆ
しょうゆ

複数のパソコンの実行環境が簡単に揃えることができるのは魅力的やわ…🤤

このようにDockerを使えばシステムを開発する際の環境構築の手間を大幅に削減できます。

是非、積極的に活用してみてください。

まとめ

この記事のまとめ
  • Dockerはコンテナを利用するためのソフトフェア。
  • コンテナは独立した実況環境を構築する技術。
  • Dockerを利用すれば簡単にコンテナを構築することができる。

作成者: しょうゆ

独学でプログラミング学びたい人向けへ情報発信をしています! …というのは建前で、学んだことをまとめています。 独学で分かりにくかった部分を分かりやすく発信したいです。