Dockerとは何かわかりやすく解説
まずは「Dockerとは何か?」をわかりやすく解説します。そもそも仮想環境とは何か、Dockerで何ができるのか、Dockerと他の仮想マシンの違い、Dockerの使いどころについてまとめたので、Dockerについて詳しく知らない方はこの機会にぜひ学んでください。
仮想環境とは?
仮想環境とは、コンピュータ内で構築された仮想的な環境を意味します。仮想環境内では通常のコンピュータと同じような手順で、アプリを動かしたりプログラムを開発したりできます。また、Windowsの中にLinuxの仮想環境を構築することもできるため、Linuxでしか使えないアプリをLinuxパソコンを持っていなくても使うことが可能です。
仮想環境を作るには、コンピュータのCPUやメモリなどのリソースを仮想環境にも分け与える必要があります。あくまで元々あったリソースを使っているだけなので、速度などの性能は通常よりも落ちますが、実機をもう1台用意しなくて良いというコスト面のメリットがあります。
Dockerで何ができるのか?
DockerとはDocker社が開発した仮想環境を作るためのソフトウェアを指します。Dockerはコンテナと呼ばれる技術を使って仮想環境を作っており、他の仮想マシンとは少し異なる手法を用いています。
【参考】:Docker
Dockerと他の仮想マシンの違い
Dockerと並んで代表的な仮想マシンにVMware Playerがありますが、VMware Playerは仮想環境の作り方がDockerとは異なります。VMware PlayerはパソコンのOS上に別のOSを作り、そのOS上に仮想環境を作ってアプリを動かします。たとえば、WindowsOS上でVMware Playerを起動させLinuxOSを作り、LinuxOS上でExcelを動かすといった具合です。
この場合のExcelは、ゲストOSであるLinuxOSによって管理されます。VMware Playerのやり方ではExcelを使う度にゲストOSを動かす必要があるため、起動が遅くなってしまうデメリットがあります。
対してDockerは、ゲストOSを作らず直接アプリを動かすことができるため、起動が速いメリットがあります。
Dockerの使いどころ
Dockerは主に開発環境を構築する際に使われます。Dockerを使えば開発チームの環境を全く同じにできるのがメリットです。開発環境が違うと開発中のアプリの挙動が変わってしまうことがあり、連携が取りにくくなってしまいますが、Dockerはその問題を解決します。Dockerで全員同じ状態の仮想環境を作り、そこに共通のアプリやツールをインストールすれば開発環境が異なることはありません。
Dockerの仕組みについて
Dockerは、Dockerエンジン・Dockerイメージ・コンテナの3つから成り立っています。この3つの役割や特徴を知ることで、Dockerの仕組みについて理解できるので、3つについて詳しく解説します。
Dockerエンジン
DockerエンジンはDockerそのものを指します。Dockerエンジンを起動させるとパソコンのOS上でコンテナが動くようになります。Dockerは公式サイトからWindows用、Mac用それぞれをインストールすることが可能です。
Dockerイメージ
コンテナを取得する前にDockerイメージを用意する必要があります。Dockerイメージはコンテナの実行に必要なファイルがまとめられたものであり、アプリごとに別々の種類のイメージが用意されています。
DockerイメージはDocker Hubから入手することが可能です。Docker Hubには各Dockerイメージを入手するためのコマンドが書かれているので、そのコマンドをコマンドプロンプトで叩きます。
【参考】:Docker Hub
コンテナ
Dockerイメージを入手したら、Dockerイメージによってコンテナを作ります。Dockerイメージからコンテナを作成することを「ビルドする」と言います。このようにDockerは、Dockerエンジン・Dokerイメージ・コンテナの3つから成り立っています。
Docker Desktopとは
Docker Desktopとは、WindowsやMacOS上でDockerを使用する際に便利なアプリケーションです。Docker Desktopはシンプルなインターフェースで使いやすく、これを使えばコンテナ化したアプリケーションなどの構築・共有が簡単になります。
Docker Desktopの有料化について
Dockerそのものは無料で利用できますが、Docker Desktopは2021年9月から有料化されています。
有料サブスクリプション契約が必要なのは「従業員が 251 人以上、または、年間収入が 1,000 万米ドル以上」の大企業における商用利用で、個人や規定以下の規模の企業、非商用における利用については引き続き無料となります。
Docker DesktopのLinux版が登場
今までDocker desktopにはMac版とWindows版しかありませんでしたが、2022年5月からLinux版も利用できるようになりました。
Linux版が登場したことで、OSの違いによる動作環境や機能の差をなくし、すべての主要なOSでエクスペリエンスを統一できるようになりました。
【参考】:Docker Desktop for Linux (ベータ版)
Dockerのメリット・デメリット
ここでは、Dockerのメリット・デメリットについてまとめました。Dockerは他の仮想マシンと比べてどういった点が優れているのか、劣っているのか、詳しく解説します。
メリット
Dockerのメリットは、開発環境の構築が簡単にできることです。Dockerエンジンをインストールし、利用したいアプリのDockerイメージを入手してコンテナを作成するだけで、開発環境が構築できます。また、開発環境を作り直したい場合はコンテナを削除して再び作成するだけでよく、ホストOSに影響を及ばさないため、安心して作り直すことが可能です。
さらにDockerは、パソコンのCPUやメモリなどのリースを必要最低限しか利用しないため、パソコンに与える負荷を小さくすることができます。
デメリット
Dockerのデメリットは習得に時間がかかることです。Dockerは他の仮想マシンとは異なる手法で仮想環境を構築するため、構築方法について1から理解する必要があります。Dockerの動作手順をよく理解しないまま使用すると、思わぬトラブルが発生することも多いので、Dockerを導入したくてもできない企業もあります。
Docker初心者におすすめの本
最後に、Docker初心者が1から学ぶにあたって最適な本をまとめました。Docker関連の本は数多く出版されていますが、その中でも今回挙げる3つの本はDockerの仕組みについて分かりやすく書かれておりおすすめです。
たった1日で基本が身に付く! Docker/Kubernetes超入門
本書はDockerの基本的な利用方法がわかりやすくまとまっています。DockerfileやComposeの設計、コンテナのデータ永続化など、各分野の解説がされており、Dockerの基礎知識を1日で習得することが可能です。また、サンプルファイルを使って実際にコンテナを通してアプリ開発を体験できるため、実践的なテクニックも身につきます。
▪著者:伊藤裕一 ▪ページ数:256ページ ▪出版社:技術評論社 ▪発売日:2020/07/11
【参考】:たった1日で基本が身に付く! Docker/Kubernetes超入門
Docker/Kubernetes 実践コンテナ開発入門
Docker初心者から中級者までおすすめの本です。Dockerの基礎知識から実際のアプリの作り方まで徹底解説した入門書となっており、じっくりDockerを学びたい方に適しているでしょう。また、Dockerを実際に現場で活用している方が書いた本なので、Dockerの最新情報に関しても掲載されています。
▪著者:山田明憲 ▪ページ数:424ページ ▪出版社:技術評論社 ▪発売日:2018/08/25
【参考】:Docker/Kubernetes 実践コンテナ開発入門
さわって学ぶクラウドインフラ docker基礎からのコンテナ構築
コンテナ環境を自力で構築できるようになることを目的とした本です。Dockerのインストール方法から始まりWebサーバを起動させる方法、永続化、ネットワーク、コンテナイメージと順番に学ぶことができます。インフラエンジニアを目指す方や、Webアプリ開発者のインフラ学習に最適な1冊と言えるでしょう。
▪著者:大澤 文孝、浅居 尚 ▪ページ数:448ページ ▪出版社:日経BP ▪発売日:2020/06/15
【参考】:さわって学ぶクラウドインフラ docker基礎からのコンテナ構築
Dockerを学んで業務に活用しよう
本記事ではDockerとは何かについて解説しました。Dockerと他の仮想マシンの違いやDockerの仕組みなどについて、ご理解頂けたかと思います。Dockerは動作が速い上に仮想環境の構築が簡単なので、多くの企業で導入されています。
エンジニアが市場価値を上げるコツは、今度流行すると予想される技術分野について詳しくなることです。今後Dockerを使う企業はさらに増えていくことが予想されるので、Docker未経験の方は今のうちに勉強しておくことをおすすめします。Dockerの勉強を行う場合は本記事で挙げた3つの本を活用してみてください。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから