カテゴリから探す
Geekly
コラム
技術・
テクノロジー
職種・
ポジション
Web・
ゲーム
転職準備
転職活動
  1. HOME
  2. Geekly Media
  3. 技術・テクノロジー
  4. 『Docker』のメリット・デメリットを徹底解説!気になる使い方もわかりやすく解説します!
  • 技術・テクノロジー

『Docker』のメリット・デメリットを徹底解説!気になる使い方もわかりやすく解説します!

開発を進める上で『OSや環境によってプログラムが動作しないことがある』問題は必ずついてきます。Dockerはアプリケーション作成・デプロイ・実行を簡単にするツールのため、上記の問題を解決するのに役に立ちます。Dockerのメリット・デメリットを抑えてしっかりと理解しましょう!またWindowsでの使い方も紹介します!

Dockerについて

 

クジラのアイコンが特徴のソフトウェアDocker はコンテナ型の仮想化サービスです。

コンテナ型の特徴・Dockerと仮想マシンの違いを簡単に紹介します。

 

Dockerとは?

 

 

コンテナとは一般的な意味では『(内部に物を納めるための)容器』ですが、ここでのコンテナ型とは『ソースコードやそのすべての依存関係をパッケージ化するソフトウェア』を示します。

つまり、ユーザが作成したコンテナ(ソースコードや環境)をDockerという移送手段を用いて他のパソコンにまるっと展開することができます。

コンテナ内はDockerの管理下に存在しており、その中ではアプリケーションやライブラリ、ミドルウェアなどをそれぞれ管理します。

 

どんなときにDockerを使うのか

 

 

リリース当初はアプリケーション開発時に使用する用途がほとんどでした。

その理由はOSやバージョン違いの動作に素早く対応できデプロイの速度を上げられるからです。

しかし最近ではDockerの実用性に高い評価があり、開発時だけではなくコンテナの環境をそのままテストや本番環境として利用されるケースが増えています。

 

仮想マシンとの違いは?

 

 

よく比較されるサービスとしてVMwareやVirtualBoxなどの仮想マシンが挙げられます。

大きな違いとしてDockerが仮想化するのは『コンテナ』で仮想マシンは『OS』を仮想化します。

Dockerは1つのOSに対して多数のコンテナを管理するため多数のOSを管理する仮想マシンと比較して軽量で速いです。

また、コンテナ作成に必要なリソースは少ないため導入が簡単ですぐに開始することができるので開発の密度を高めることができ、同じハードウェアでより多くのサービスを実行できるためコストを削減できます。

しかし、同じカーネル上で実行することの副作用として仮想マシンよりも分離度が低くなります。

要は実行しているOSに依存度が高いということです。

 

Dockerのメリット①  簡単に環境構築

 

 

今までの開発は同じ環境を別のマシンで再現するためには多数の手順があり、操作ミスや手順の記憶違いなどのヒューマンエラーで開発を遅延する可能性がありました。

Dockerは環境がまるっと提供されるので少ない手順で同じ環境が構築できるためよりスピーディーで正確に同じ環境を再現することができます。

 

Dockerのメリット②  軽量でスピーディーな開発

 

 

コンテナは軽量のため、立ち上げる速度は一瞬です。

それと比較して仮想マシンはOSをいくつも立ち上げる必要があり、処理自体がかなり重いです。

コンテナはメモリやディスクの消費量を少なく抑えた状態で仮想化できます。

これにより、立ち上げるスピードも圧倒的に早くなり開発に集中できます

 

Dockerのメリット③ ハードウェアの資源削減

 

 

コンテナのサイズは非常に小さく、一つの物理サーバに多数のコンテナを稼働させることができます。

その結果、物理サーバを購入するコストが削減されます。

 

IT業界に転職しようならGeekly

Dockerのメリット④ 共有化されたシステム

 

 

Dockerの特徴はコンテナだけでなく、共有化サービスの『Docker Hub』があります。

『Docker Hub』を通してインターネットを通じて世界中の開発者の成果物を入手したり、成果物をアップロードすることができます。

優れたプログラマが作成したイメージを効率よく、活用する仕組みが整えられています。

 

Dockerのメリット⑤ イミュータブル・インフラストラクチャである

 

Dockerを利用したアプリケーション開発では開発環境をそのまま本番環境に適応することがあります。

そのため本番用のシステムには一切手を加えず、「不変の状態である」ということから、イミュータブル(インフラストラクチャ)と呼ばれています。

開発環境と本番環境が同じのため運用コストも下がります。

 

Dockerのメリット⑥ 物理サーバの考慮を後回しにできる

 

よくあるシステム開発は、サーバをはじめとする機器の調達など、コンピュータ資源をまず初めに整えることが先決でした。

しかしDockerを活用すれば、自分たちが作りたいアプリケーションから始めることができます。システム開発者はハードウェアを気にせず、開発だけに専念できる分離された仕組みとなっています。

 

Dockerのメリット⑦  モダンなエコシステム

 

Dockerを使うとコードを早く提供でき、かつアプリケーションの環境も統一しリソース量を改善して費用を節約できます。

Dockerのシンタックスはシンプルで分かりやすいため、広く使われておりDockerと組み合わせてすぐに使えるツールや既製のアプリケーションとしての強力なエコシステムにもなります。

 

Dockerのデメリット①  同一のOS(カーネル)を利用すること

 

同一のOSから複数のコンテナを作成するため、OS違いの検証は別のマシンまたは仮想マシンを使用しなければなりません。

コンテナの軽量化を図ったための弊害でもあります。

 

Dockerのデメリット②  提供できるホストの種類が少ない

 

WindowsやMacで対応されているため、大きなカバーはされていますがWindows Serverには対応していません

Windows HomeのOSでは『Docker Toolbox』というソフトをインストール必要があります。

これはVirtual Box(仮想マシン)上にDockerを立ち上げる仕組みのソフトです。

Dockerのイメージを共有・使用することが可能ですが結局、仮想マシン上に立ち上げているのでDockerのうまみを100%引き出せているわけではありません。

Windows ProですとHyper-Vという仮想化システムが提供されるため、仮想マシンを立ち上げることなく、Dockerを使用することができます。

 

Dockerの使い方(Docker Toolbox for Windows)

 

 

ユーザが多いであろうWindows HomeのOSを対象に使い方を説明します。

今回ではnginxのサーバを導入するところまでを実施します。

 

手順① Docker Toolboxのインストール

 

Dockerのオフィシャルサイトから『Docker Toolbox for Windows』のインストーラを入手します。

 

手順② Select Componentsページの設定

 

ダウンロード後にインストーラを起動するとまず『Select Components』ページが表示されるので、全てのチェックボックスにチェックを入れて次のページへ遷移します。

 

手順③ Select Additional Tasksページの設定

 

次に『Select Additional Tasks』が表示されるので、こちらも全てのチェックボックスにチェックを入れて次のページへ遷移します。

インストールが開始されます。

 

手順④ Docker Quickstart Terminalの起動

 

インストールが終了するとデスクトップ上に『Docker Quickstart Terminal』が作成されているのでこちらをダブルクリックします。

 

手順⑤ Dockerホストの起動確認

 

コマンドプロンプトのような黒い画面が出てきます。

これはDockerエンジンが動作しているDockerホストの仮想マシンに接続されている証拠です。

 

手順⑥  サーバのIPを確認

 

コマンドプロンプト上で『docker-machine ls』を打ち込みEnterを押します。

すると、『tcp://192.168.99.100:2376』のような文字列がありますので、192.168.99.100に該当する部分をメモします。(のちにIPとして使用します)

 

手順⑦ nginxのダウンロード

 

コマンドプロンプト上で『 docker run –name some-nginx -d -p 8080:80 nginx』を打ち込みEnterを押します。するとダウンロードとプロセス実行が開始されます。

 

手順⑧ nginxの起動確認

 

処理完了後、ブラウザで『http://(手順⑥のIP):8080/』(例:http://192.168.99.100:8080/)を

入力すると『Welcome to nginx!』と表示されていればコンテナ上にnginxのサーバを立ち上げることができました。

 

最後に~Dockerが必要な人とは?~

 

 

Dockerはとても魅力的なサービスとご紹介させていただきました。

しかし、現実世界の話ですがDockerは海外では多数運用されている実績がありますが、日本ではまだほんの一握りのユーザしかいません。

それは企業や個人のやりたいこととできることがマッチしていないことやそもそも仮想マシンとの区別ができておらず、仮想マシンで満足するというケースは少なくありません。

しっかりと用途と目的に沿ってDockerを導入することでコストや運用が楽になるのかを検討してから動きましょう。

 

まとめ

 

Dockerの特徴はいかがでしたでしょうか。

世界中で注目されているサービスでもあり、日本でも流行りつつあります。

開発スピードを上げる手段の1つとして是非一度はDockerを使用してみることをお勧めします。

 

無料転職相談に登録してDockerの知識を活かせる会社に転職しよう

バスコ

Geekly Media
ライター

この記事が気に入ったら
シェアしよう!

  • twitter
  • facebook
6+

関連記事

求人数×IT業界での紹介実績数で、納得の転職をサポート。IT業界専門だからこそできる提案力を実感してみてください。