LoginSignup
1
2

More than 3 years have passed since last update.

【2020年4月最新】Docker の全体像についてまとめてみた。

Posted at

Docker を構成するコンポーネントについて

私含めDockerの初学者がDockerについて独学で学習しようとした際に、用語で混乱することがあったので、簡単にまとめてみました。
Docker V19.03 (2020年4月現在最新版)の情報を基に作成しました。
各コンポーネントの説明のため、コンポーネントの詳細には触れていませんが、全体を把握するに際にお役に立てばと思っています。

コアとなるコンポーネント

Dockerを構成するコンポーネントは下記2つです。

Docker Engine

Docker EngineがDockerと言われているものの実態。
Docker EngineはLinux上で1つのプロセスとして動作します。
OSがLinuxであればDocker EngineさえインストールすればDockerを利用することが可能です。
ただ、Linux 以外のOSの場合は、Linux環境を構築するためにDockerが提供する下記のコンポーネントを別途インストールする必要があります。詳細は後述します。
- Docker Desktop for Windows
- Docker Desktop for Mac
- Docker Toolbox(Desktopの旧バージョン)

Docker Registry

Dockerでは、任意のアプリケーションを実行して利用しますが、その実行されたアプリケーションのことをContainerと呼び、Containerを実行するためのテンプレートのようのものがあり、それをimageと呼んでいます。
そのimageを格納・共有する場所がDocker Registryとなります。

Docker Registryとして、下記を利用することができます。

  • Dokcer Hub(Docker 公式のレジストリサービス)
  • クラウドベンダー(AWS,GCP,Azure,OCI)が提供しているレジストリービス
  • 自前で作成するプライベートなレジストリサービス

面白いのがDocker HubにはDocker Registryのimageがあるので、そのimageを利用してDocker上にDocker RegistryのContainerを作成し、プライベートなレジストリ構築することが可能です。

Linux OS 以外でDockerを利用する場合に必要となるコンポーネント

Linux以外の環境で利用する際は、下記に記載するWindows / Mac 用のDockerDesktopを自身の環境に合わせてインストールしてしてください。

Docker Desktop for Windows

Docker Desktop for Windowsは、Windows環境でDockerを利用する場合に、インストールする必要のあるコンポーネントです。

インストールするにあたっては、下記システム要件を満たす必要があります。

  • Windows 10 64bit: Pro, Enterprise or Education (Build 15063 or later).
  • メモリ 4GB
  • Hyper-VとContainers機能の有効化

インストーラーに含まれるものは下記です。

  • Docker Engine
  • Docker CLI client
  • Docker Compose
  • Notary
  • Kubernetes
  • Credential Helper

公式ドキュメントには上記記載があるのですが、私がわからなくなったのはここでした。Docker EngineってLinux上で動くものなのに、Linux環境なくいて動くのかということです。

実際にインストールしてみて判明しましたが、Linux環境がないと動きません。

WindowsでDockerを利用するためには、下記2つのうちのいずれかのLinux環境を利用します。

1. Hyper-V上のLinus仮想マシンを利用する

Docker Desktop for WindowsをインストールするとHyper-V上に"DockerDesktopVM"という仮想マシンが作成され、その仮想マシンがLinux環境を提供してくれます。

こちらの方法に関しては、Docker Desktop for Windowsをインストールさえすれば自動で利用できるようになるので、インストール時に特に意識しなくても大丈夫です。

2. Windows Subsystem for Linux2(WSL2)を利用する

2020年4月現在、edge(エッジ)で実装されている機能です。(stable(安定版)には実装されていません。)

WSL2はWindowsの機能でLinuxカーネルを実装しているもので、2020年4月の執筆時点では一般提供されてなくWindows10のInsider Previewで提供されいています。

なので、2020年4月の執筆時点は、WSL2もDocker Desktop for Windowsも安定板としては提供されていないものを利用する事となります。

WSL2でDocker Desktop for Windowsを利用できる様になると何が嬉しいかというと、indows10 Home で Docker Desktop for Windowsを利用できるようになるのです。

Hyper-V上のLinuxを利用する場合は、Windows10 Pro以上でないと利用できなかったので、あきらめていたユーザさんも多いかと思いますが、そういったユーザさんにはうれしい機能かと思います。

WSL2の正式版がバージョン2004で提供される予定で、CEの最新版は2020年6月に提供される予定なので、2020年6月以降には、正式な機能としてWSL2で Docker Desktop for Windowsを利用できるようになるのではと思っています。

Docker Desktop for Mac

MacもWindowsと同様、Linuxではないので、Dockerを利用する場合にインストールする必要のあるコンポーネントとなります。

インストールするにあたっては、下記システム要件を満たす必要があります。

  • Macのバージョンは最新の2つ前まで
  • メモリ 4GB
  • ETPを含んだMMTがサポートされているIntelのハードウェア

インストーラーに含まれるものは下記です。(Windows版と同じです。)

  • Docker Engine
  • Docker CLI client
  • Docker Compose
  • Notary
  • Kubernetes
  • Credential Helper

Windowsの場合はHyper-V上の仮想マシンかWSL2のLinux環境を利用していましたが、Docker Desktop for Macの場合は、HyperKit上に作成されるAlphine Linuxベースの仮想マシンを利用し動作します。

Dockerの利便性を向上させるコンポーネント

Docker Compose

Docker Composeは、Docker Engine上で実行されるContainerを複数定義し、実行するためのコンポーネントです。

Docker Composeを利用してContainerを実行する際は、 Container 毎に定義可能なサービス(services) 、 ネットワーク(networks) 、 ボリューム(volumes) をdocker-compose.ymlというYAML形式の定義ファイルに記載して、記載のある複数のContainerをまとめて実行・停止することが可能です。

もう少しかみ砕いて説明すると、Docker Engineは複数のContainerを実行する場合は手間がかかるけど、Docker Composeを利用する事によっては、複数のContainerの実行を簡単に行えるようになります。

Docker Composeは Docker Engineには含まれていないため、Docker Engineとは別にインストールする必要があります。ただ、Docker Desktopのインストーラには含まれているので、Docker Desktopを利用している方はデフォルトで利用可能です。

レガシーなコンポーネント

レガシーなコンポーネントについて紹介しますが、Docker としても今後開発を進めていくコンポーネントではなくなっているので利用する事はおすすめしませんが、ネットで調べるとどうしても昔の情報が出てきますので、その意味合いも込めて、レガシーコンポーネントについても紹介します。

Docker Toolbox

Docker Desktopがリリースされる前に、WindowsやMacでDockerを利用するために提供されていたコンポーネントです。

インストーラーに含まれるものは下記です。

  • Docker Machine
  • Docker Engine
  • Docker Compose
  • Kitematic
  • Oracle VirtualBox

Docker Desktopの方が利便性がいいため、今となってはDesktopのシステム要件を満たさない場合に利用するコンポーネントという位置づけです。

Docker Desktopと違って、Docker Toolboxの場合は、Docker Toolboxをインストールした端末上でネイティブアプリとしてDockerを利用できず、VirtulBox上のLinux環境にログインしてDockerを利用するというのがデメリットとなります。

Docker Machine

Docker Desktopがリリースされる前にWindowsやMacでDockerを利用する場合は、このDocker Desktopが必須のコンポーネントでした。ただ、Docker Desktopがリリースされたことによって、Linux以外のOSでもDockerがネイティプアプリケーションとして実行可能となったため、今では利用されなくなりつつあるコンポーネントとなります。

Docker Swarm(standalone)

Docker 1.12 より古いバージョンので利用されていたstandalone のコンポーネントです。
1.12 以上のバージョンであれば、Swarm modeという機能がDocker Engine に含まれるようになったため、今では個別のコンポーネントとしては利用されなくなりつつあります。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2