Docker

Dockerを構成するコンポーネントの全体像

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

Docker Engine

Docker EngineがDockerと言われているものの実態
Docker EngineLinux上で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 RegistryContainerを作成し、プライベートなレジストリ構築することが可能です。

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

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 HomeDocker 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 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 に含まれるようになったため、今では個別のコンポーネントとしては利用されなくなりつつあります。

タイトルとURLをコピーしました