Docker情報
Dockerとは
Docker(ドッカ—)はソフトウェアコンテナを用いてアプリケーションのデプロイメントを自動化する仮想化オープンソースソフトウェアです。Go言語で記述されており、ラップトップ、データセンターのサーバ、クラウドなど様々な環境に、分散アプリケーションを構築、配布、実行することができます。DockerはPaaSベンダーであるドイツのdotCloud社(後にDocker社に名称変更)からオープンソースソフトウェアとして2013年3月に公開されました。Docker自体はプラットフォームとも呼ばれ、主要部分であるアプリケーションはDockerエンジンと呼ばれています。
なお、Dockerのようなコンテナを管理するツールもあり、Kubernetes、Google Kubernetes Engine、Red Hat OpenShift Container Platformなどが有名です。
主な特徴
コンテナ型仮想化ソフトウェアのDockerは、ハイパーバイザ型の仮想化ソフトウェア(KVMやVMWare ESXi等)と以下の点で異なります。
- ホストOSとKernelやリソースを共有する
- 環境ごとのOSインストールが不要でイメージが軽量
- イメージの起動が高速
同様の機能を提供する商用製品
Dockerと同様のコンテナ型仮想化ソフトウェアには、Podman、Skoepo、buildahがあります。他にもハイパーバイザ型仮想化ソフトウェアのVMWare ESXi、KVM、Hyper-Vや、ホスト型仮想化ソフトウェアのVMWare Workstation Playerがあります。
ユースケース
以下の導入事例があります。
- ADP : Docker Enterprise Editionを採用し、セキュリティとスケールを実現
- PayPal :Docker使用して既存のアプリケーションをコンテナ化し、コスト削減と、セキュリティを強化
- Indiana University :Dockerにより115,000人の学生にアプリケーションを提供
- Netflix :Dockerのコンテナ技術を使用し1000を超えるサービスや機能を安全に高速に提供
Dockerのアーキテクチャ
Dockerは以下のようなアーキテクチャになっています。
https://docs.docker.com/get-started/overview/#docker-architecture より引用
Docker エンジン
Dockerエンジンは、イメージの作成や、Dockerコンテナの実行を行うアプリケーションの構築を行うためのクライアントサーバアプリケーションです。デーモンプロセスDockerデーモン、Dockerデーモンと通信を行うREST API、クライアントアプリケーションのDockerクライアント(CLI)などで構成されます。
https://docs.docker.com/get-started/overview/#docker-architectureより引用
Dockerデーモン
Dockerデーモン(dockerd)は、Docker APIリクエストを待ち受け、イメージ、コンテナ、ネットワーク、ボリューム などのDockerオブジェクトを管理します。
Docker クライアント
DockerクライアントCLI(dockerコマンド)は、ユーザがDockerを"docker run"のように対話形式で操作する為のコマンドツールです。
Dockerレジストリー
Dockerレジストリーは、Dockerが扱うイメージ、コンテナ、ネットワーク、ボリューム、プラグイン、等のDockerオブジェクトを格納します。
Dockerオブジェクト
Dockerは、イメージ、コンテナ、ネットワーク、ボリューム、プラグイン、等をオブジェクトとして扱います。
イメージ
イメージは、Dockerコンテナを作成するための手順が記載された読み取り専用のテンプレートです。
コンテナ
コンテナはイメージにより作成された実行可能なインスタンスです。
関連するアプリケーションには、以下のようなものがあります。
Kubernetes
Dockerをはじめとするコンテナ化されたアプリケーションの展開、スケーリング、管理を行うオープンソースのプラットフォームです。
Docker Compose
複数のコンテナを使うアプリケーションをYAMLファイルに定義し、実行することが出来ます。
Docker Machine
クラウド等へ自動的にコンテナ実行環境をプロビジョニングします。
Docker Hub
イメージの管理と構築のためのホステッド・レジストリ・サービスです。
動作環境
DockerはLinux、macOS、Windowsで動作します。
Dockerコンテナを動作させるためには少なくともDocker Engineが必要です。本番環境などでDockerコンテナを動作させるだけの場合は、LinuxにDocker Engineをインストールすることになりますが、開発などにDockerを利用したい場合は以下を含むDocker Desktopをインストールする方が簡単です。
- Docker Engine
- Docker CLI client
- Docker Scout
- Docker Build
- Docker Extensions
- Docker Compose
- Docker Content Trust
- Kubernetes
- Credential Helper
Docker Engineは、以下のページに記載されている様々なLinuxディストリビューション向けに提供されています。
WindowsやmacOSでは、基本的にDocker Desktopをインストールすることで、Docker Engineをインストールします。
Dockerのライセンス
Dockerのライセンスは、「Apacheライセンスバージョン2」(Apache License version 2)というライセンスに基づいて公開され、営利、非営利を問わず、 誰でも自由かつ無償で利用・改変・再配布できるようになっています。
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。
関連OSS
-
サポート対象
Rancher
ランチャー。Rancher Labsが主導となって開発しているKaaS(Kubernetes-as-a-Service)を実現するプロダクトで、Multi-Cluster Kubernetes Management を行うためのOSSです。
-
サポート対象
Kubernetes
クーバネティス。Dockerをはじめとするコンテナ化されたアプリケーションの展開、スケーリング、管理を行うオープンソースのプラットフォームです。
-
サポート対象
CRI-O
CRI-OはKubernetes Incubator Projectとして開発された、Kubernetes実装のコンテナランタイムです。