Dockerとは?メリット・デメリットを初心者向けに解説

ペン子
ペン子

最近よく聞くDockerってなんだろう?

ユキ
ユキ

今回はDockerについて解説していくね。

開発をしていると、OSや環境によってプログラムが動作しないという問題が発生することがあります。
そんな問題を解決するためにDockerはアプリケーション作成・デプロイ・実行を簡単にするツールです。

今回はそんなDockerのメリット・デメリットを初心者向けに解説していきます。


スポンサーリンク

1: Dockerとは

Dockerとは、コンテナ型の仮想化サービスです。
コンテナ型とは「ソースコードやそのすべての依存関係をパッケージ化するソフトウェア」のことです。一般的には「容器」という意味合いで使用されるコンテナですが、ここでは「他のエンジニアに共有したいものを入れる容器」のようなものとイメージしたほうがよいでしょう。

自身が作成したコンテナ(ソースコードや環境)をDockerという移送手段を用いて他のパソコンにすべて展開することができます。コンテナ内はDockerの管理下に存在しており、その中ではアプリケーションやライブラリ、ミドルウェアなどをそれぞれ管理します。

最近ではDockerの実用性が上がっており、開発時だけではなくコンテナの環境をそのままテストや本番環境として利用されることが増えています。

2: Dockerのメリット

ここではDockerの主なメリットを3選紹介いたします。

  • 環境構築が簡単
  • 共有化できる
  • モダンなエコシステム

2.1 環境構築が簡単

Dockerは構築した環境がそのまま提供されるので正確でスピーディーに同じ環境を再現することができます。

従来の開発では同じ環境を別のマシンで再現するためには多数の手順がありました。
この際に操作ミスや手順の記憶違いなどのヒューマンエラーが発生する場合が多いため少ない手順で同じ環境を構築できるコンテナ型のDockerが使用されるようになりました。

2.2 共有化できる

Dockerには共有化サービスの「Docker Hub」があります。

開発者ならだれでも知っている「Git Hub」みたいなもので、インターネットを通じて世界中の開発者の成果物を入手したり、自身の成果物をアップロードすることができます。
世界中の優秀なプログラマが作成したイメージを効率よく活用できる仕組みになっています。

2.3 モダンなエコシステム

IT業界ではたびたび「新しいもの」→「モダン」と呼ぶことがありますが、そんな中Dockerはモダンなエコシステムであるといえます。

Dockerを使用するとスピーディーにユーザーへと提供ができ、かつリソース量を改善できるため費用を削減することができます。
Dockerを用いてアプリケーションを作成している企業も増えており、アジャイル開発でも重宝されるため今後のシステムの構築にDockerは必要不可欠なものとなっていくでしょう。

3: Dockerのデメリット

ここではDockerの主なデメリットを3選紹介いたします。

  • OSが限定される
  • 勉強時間がかかる
  • 小さなシステムの場合運用コストがかかる

3.1 OSが限定される

Dockerはコンテナの軽量化を行っているための弊害も発生しています。

代表的なものは同一のOS(カーネル)を使用しなければいけないことです。
同一のOSから複数のコンテナを作成するため、違うOSの検証は別のマシンを使用しなければなりません。
コンテナ型以外の仮想化方式には「ホストOS型」と「ハイパーバイザー型」があります。

3.2 勉強時間がかかる

Dockerは比較的新しい技術ですが、勉強するのに時間がかかります。

リファレンスも英語のものが多いため翻訳しなければ深く勉強することはできません。また、DockerイメージやDockerファイルの作成において独自の構築をすべて理解していないと動作においてトラブルが起きてしまいます。
そのため、大手の既存システムにおいては導入したくてもできないとい問題点も発生しています。
ですが、習得すれば新規のシステムの環境構築や汎用性が上がるため勉強しておくことにデメリットはないでしょう。

3.3 小さなシステムの場合運用コストがかかる

Dockerの性質上勉強時間が設定にかかってしまうため運用コストがかかります。

中規模・大規模システムだとのちのちのことを考えるとDockerを使用したほうがいい場合がありますが、個人で利用するような小さなシステムの場合は余計な運用コストがかかってしまい、適していません。
システムの規模や運用を考えて導入するかを検討したほうがよいでしょう。

まとめ

今回は、Dockerのメリット・デメリットについて解説しました。

Dockerを使えるようになると、正確でスピーディーな環境構築ができるようになるため勉強は大変ですが習得していきましょう。