プログラミングの学習をしている方で「Dokcer」という言葉を聞いたことがある方は多いのではないでしょうか?
ドットインストールでPHPを学習していた時に、しれーっとDockerが出てきて『は?😇』ってなった記憶があるぞ😇
この記事では、Dockerとは何なのか?ということについて、なるべくわかりやすく解説します。
Dockerってなに?
結論から言いますと、Dockerはコンテナを利用するためのソフトフェアです。
いや、そもそも「コンテナ」ってなんだよ?😇
コンテナ技術を調べると、「仮想化サーバーがあーだこーだ」っといった説明がめっちゃ出てきます。
…が、とりあえずそれは放っておきましょう!笑
ざっくりと説明すると『互いに影響を与えない独立した実行環境を構築する技術』です。
・・・???😇
と、言われてもやっぱりピンときませんよね?笑
もう少しかみ砕いて、具体例を交えながら説明していきます。
複数のシステムが混在するときの問題点
1つのサーバで複数のシステムやアプリケーションが混在している場合、互いに影響を与えないように調整が必要となるケースが多々あります。
例えば1つのサーバー内にシステムAとシステムBが混在していたとしましょう。
このシステムAとシステムBは共通のワークフレームNを使っています。
ここで、システムAの都合でワークフレームNをアップデートしたとしましょう。
すると、共通のフレームワークNを使っているシステムBは、フレームワークNのアップデートにより動かなくなる可能性があります。
複数のシステムが混在すると、共通の実行環境の変化がお互いのシステムに影響を与えてしまうんやね…😥
独立した実行環境を構築する
このような実行環境の競合を解決するのが「コンテナ」です。
コンテナを利用することで、互いに影響を与えない独立した実行環境を構築することができます。
つまり、システム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を使えばシステムを開発する際の環境構築の手間を大幅に削減できます。
是非、積極的に活用してみてください。