見出し画像

Docker超入門

外資系企業のソフトウェアエンジニアをしておりますタロイモと言います。
よろしくお願いします。

この記事はdocker入門と書いていますが、dockerの使い方(コマンド)などは扱いません。

dockerの生まれた背景や導入メリットを簡単に説明しています。

1. Dockerをひとことでいうと

コンピューターの*OSを気にせず開発をスピーディーに行うことを可能にするもの

*OSとはオペレーティングシステム(Operating System)のことで、iPhoneで使われているiOSやスマホで使われているAndroidなどがあります。パソコンで言えば、WindowsやmacOSが有名です。WindowsのパソコンとMacのパソコンの両方を使ったことがある方はよく分かると思いますが、各OSでファイルの管理方法やユーザーインターフェースがかなり違います。

2. 生まれた背景と生まれて可能になったこと

【Docker誕生以前】
Docker誕生以前から、エンジニアの間での悩みは実際に使用するサーバーと開発用のコンピューターでOSが違うことでした。

AndroidスマホとiPhoneを比べて分かるように、OSが違うと表示画面が全然違いますよね。
つまりOSが違うとコンピューターはまともに動いてくれません。

スクリーンショット 2020-05-10 17.18.31


<仮想マシン>
そこで開発されたのが、開発コンピューターでも本番サーバーと同じOSが使用できるようになる仮想化ソフトです。

仮想化ソフトのOSで、サーバーと同じOSを立ち上げます。

スクリーンショット 2020-05-10 17.36.33

しかし、時代が進み、開発スピードの短縮が要求されるようになるにつれ、仮想化ソフトにも弱点が見つかりました。


それは、
①立ち上げるスピードが遅いこと
②同じ仮想化ソフトを配布するには難しいこと
③使うコンピューターによりメモリやストレージに限界があること
などです。

①仮想化ソフトはOSを立ち上げる必要があるため、どうしても起動が遅くなります。パソコンを立ち上げるのって時間が掛かるんですよね。
②仮想化ソフトはメモリ的に何GBにもなります。そのため、一緒に開発する人に*同じ環境を共有するのはとても時間がかかります。
*複数人による開発では全員で一貫した開発環境を共有しなければいけません。
③仮想化ソフトはコンピューターのメモリやストレージを利用するので、どうしてもコンピューター性能の制約があり、大規模サーバーで動かすアプリを作るのは難しいです。

この後、コンピューターOSを必要としないハイパーバイザーなども開発されましたが、同様のデメリットがありました。


【Docker誕生】
そこで開発されたのが、コンテナ技術を用いたDockerです。

以下の画像を見ると分かりますが、仮想化ソフトのOSがないですね。DockerはコンピューターのOSを用い、そのOS内部でイメージという形でサーバーと同じOSを立ち上げます。

スクリーンショット 2020-05-10 17.43.39

Dockerは仮想化ソフトの3点のデメリットを解消しました。

①Dockerは、仮想的ソフトのOS立ち上げが必要ないため、立ち上がるスピードがとても速いです。
②Dockerはサーバーの各種設定をイメージという形で管理し、そのイメージはコードで扱うことができます。そのため、何GBという仮想化ソフトの移動が必要なく、テキスト1つで開発環境の共有が可能になりました。
③Dockerが利用するコンテナ技術もコンピューターのメモリやストレージを利用するのですが、効率的に利用するので、その消費量は仮想化ソフトと比較してとても少ないです。


3. Docker初心者の人が知っておくべきこと

これからの開発ではDockerが業界スタンダードになってきます。

そのため、最低でも、dockerを利用してアプリを動かし、dockerのコマンドを使えるようになることがIT業界で生き残る上で必要です。


次回は継続的インテグレーションについて紹介していきます。

よろしければサポートお願いします! サポートは、サービスの開発・改良や、記事を書く際の素材費とさせていただきます。 少しでも有益な情報発信をしていけるよう努めてまいります。 是非とも応援よろしくお願いします!!!🙇‍♂️