Dockerってなに?
どうもこんにちわ。
一昨年に営業会社を退職し、
未経験中途でシステムエンジニアの会社に入社したものです。
現在、ちょうど一年目が終わりました。
そこで今回便利なツールとして知られる、
Dockerを紹介したいと思います。
まずDockerを理解するには、
仮想環境、実際に使う場面、の2点を理解しないといけません。
Dockerとは、Docker社開発した仮想環境を動かす仕組みです。
仮想環境を動かすということは、ハードウェアの購入、
運用するコストを抑えられるというメリットがあります。
仮想環境とは
パソコンなどのハードウェア内で構築された仮想的な環境を指します。
つまりパソコンの中に作られたパソコンに似たような環境であるため、中でアプリケーションを動かすことができます。
仮想環境を作るためにはCPUやメモリなど、
パソコンを構築する要素の資源の一部を仮想環境に分け与える必要があります。
例えるなら二世帯住宅を作るようなものです。
生活に必要なキッチンやトイレ、お風呂など住宅を構成する要素の
一部を分け与え、別世帯が同じ屋根の下で個別に暮らせるようにするといったイメージを持つといいでしょう。
そしてDockerは仮想環境を作るソフトウェアです。
仮想環境を作るソフトウェアにはさまざまな種類がありますが、
Dockerは他のソフトウェアとは少し作り方が違います。
例えばDockerと並ぶ有名なソフトウェアに、VMwarePlayerというものがあります。
VMwarePlayerはパソコンの中に別のOSを作りそこに、
アプリケーションを動かします。
アプリケーションは作られた別のOSによって管理されますので、
OSを動かさないとアプリケーションが起動しません。
一方Dockerは、コンテナという技術が使われています。
仮想環境にOSを作らず、もともと入っているOSからコンテナという仮想環境を作成します。
アプリケーションはコンテナによって管理されるため、
OSをわざわざをひらかなくてもアプリケーションをすぐに
起動できます。
Dockerはいつ使う?
アプリケーション開発で利用されます。
使われる理由としては、チームの開発環境を同じにできるからです。
チームで開発を行う際に、それぞれのパソコンの状態が違うと、
アプリケーションの動きも違ってしまい不動作を起こしてしまいます。
環境の違いによる不動作とは
まずはソフトウェア開発現場には、
どんな環境があるのかを紹介します。
開発者環境
開発者がソースコードの修正・追加をしたり、
挙動確認する環境です。
ステージング環境
エンドユーザーが利用する環境を想定した環境です。
テスト用でよく利用されます。
本番環境
実際にエンドユーザーが利用している環境になります。
つまりエンドユーザーが利用できるまでに、
3つの環境があるということです。
そのため開発者が作成したソースコードを、
ステージング環境の担当者に渡し、
最後に本番環境の担当者に渡す必要があります。
作成したものを受け渡していく中で、
環境ごとで「動かない」という問題が発生することはゼロではありません。
動作しない理由は、OS、ミドルウェア、ネットワーク、ライブラリなど、さまざまな要素が挙げられます。
ただ期限が決められている中で、調査に時間を取られるのは致命的です。
完全隔離された空間
完全隔離された空間(Docker)で
アプリケーションを開発することで解決できます。
各環境にコンテナ型アプリ実行環境のDockerという技術で、
Dockerコンテナを作成し、Dockerイメージを取得することで、
異なる環境でも簡単に同一構成の環境を再現し動作できるのです。
Docker使用時の注意点
Dockerはパソコンの中に、仮想環境を構築します。
仮想環境を作るためにはCPUやメモリなど、
パソコンを構築する要素の資源の一部を仮想環境に分け与える必要がありますので、「容量」の管理が必要です。
また、VMwarePlayerなどは、別のOSの仮想環境を作ることが可能です。
例えばWindowsパソコンにMacOSの仮想環境を作り、
Macでしか使えないアプリケーションを利用することができます。
ただDockerは元々はいっているOSからコンテナを作成するため、
別のOSの仮想環境がつくれません。
どのような環境が必要なのかどんな利用するのか、
計画を立てることが大切です。
まとめ
Dockerは、それぞれのコンテナからイメージ取得させる構成・技術を
用いることで「環境による問題」を解決するものでした。
開発現場の効率をより上げるツールになりますので、
概要だけでも理解しておくといいかもです。