いなみんSEブログ

田舎出身、上京SEの勉強日誌

Dockerの事始め

Dockerとは

Dockerは、コンテナ型の仮想環境を提供するソフトウェアです。

と、言ってもコンテナって?仮想環境って?となる方もいらっしゃるかと思います。

従来(オンプレミス)の環境

従来のソフトウェア開発では、

  1. サーバー機材の調達
  2. サーバーの構築(OS設定等)
  3. サーバー上にミドルウェアのインストール
  4. 作成したソフトウェアを配置(デプロイ) の手間がありました。

※後で画像貼ります。

そして時代は仮想環境へ

VMwareVirtualBoxHyper-V等の1台のサーバー上に複数のサーバーを構築する仮想環境が出回りました。

こちらの仮想環境については、「ハイパーバイザ型」と呼ばれます。

f:id:nsutmry_ngomry:20190420151705p:plain
※Docker公式より転用

コンテナについて

ハイパーバイザ型はホストOS上にゲストOSをインストール、更にミドルウェアをインストールしてその上にアプリケーションを構築する必要がありました。

コンテナはDockerをインストールし、Docker上でコンテナを実行するだけで動作します。

f:id:nsutmry_ngomry:20190420151918p:plain
※Docker公式より転用

オンプレミス、ハイパーバイザ、コンテナの比較

[オンプレミス]

上記にも記載しましたが、オンプレミスでは機材調達〜アプリケーションのデプロイまでの手間があります。
また、同様の構成で複数サーバーを立ち上げるとなるとその都度同じ作業を行う必要があります。

■メリット

  • 単一のOS上で動作するため、仮想と異なり他のOSにリソースを奪われない

■デメリット
* 機材の調達が必要 * 複数サーバー立ち上げる場合は都度構築が必要

[ハイパーバイザ]

オンプレミスと違い、ホストがあればその上に複数のOSを展開することができます。
複数サーバーを立ち上げる場合も同一ホスト上であればOSイメージを複製し、ちょっと設定を変更する程度で動かせます。
別のホスト上でも同一の仮想ソフトウェア上であればOSイメージを展開することもできます。

■メリット
* 複製が容易

■デメリット
* ゲストOSのインストール、ミドルウェアのインストールの手間がある

[コンテナ]

ホストOS上にDockerをインストールするだけでコンテナ化されたアプリケーションを実行できます。
ハイパーバイザと比べた場合、環境構築が簡単に行える、起動・再起動が高速と言ったメリットがあります。

■メリット
* ハイパーバイザと比べて起動・再起動が高速 * Dockerさえ入れればどこでも動く

■デメリット
* Windows上でないとWindowsコンテナが実行できない

Dockerの歴史

時期 内容
2013年3月 Docker登場
2014年 Googleが毎週20億個のコンテナを起動していると発表

2014年代から本格的に普及し出します。
※この頃、私は新卒でした。。。

歴史についてはあまり触れても本記事の趣旨ではないので、興味がある方は調べみてください。

Dockerは何ができるの?

従来の開発では、開発PC上で開発環境を構築し、テスト環境、本番環境全てでアプリケーションを実行する環境の構築が必要でした。
環境構築は誰かが行い、他のメンバーは先に作った人から聞きながら、手順書があれば見ながら構築しないと作業が行えませんでした。

Dockerを使うとDockerさえインストールされていればコマンドを実行するだけで簡単に開発に必要な環境を構築することができます。

例)
LAMP環境の構築

■従来

  1. LINUX環境の構築(ハイパーバイザ)
  2. MySQL(MariaDB)のインストール・設定
  3. Apacheのインストール・設定
  4. PHPと必要なライブラリのインストール

■Dockerの場合

  1. Dockerのインストール ※インストール済みの場合は不要
  2. Dockerコンテナ実行 ※もちろん、コンテナを作成する必要がありますが。

つまり、誰か1人がコンテナイメージを作りさえすれば他の人はコンテナを実行するだけで環境構築が可能です。
また、開発で使用したコンテナはそのまま本番環境で動かすことも容易に行えます。

疲れちゃったので今回はここまでとします。
次回はDockerのインストールから説明します。