トップ OSS紹介 Docker

Docker

サポート対象

NRIのOpenStandiaが提供するDocker最新情報

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を超えるサービスや機能を安全に高速に提供

参考)https://www.docker.com/customers

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

    ランチャー。Rancher Labsが主導となって開発しているKaaS(Kubernetes-as-a-Service)を実現するプロダクトで、Multi-Cluster Kubernetes Management を行うためのOSSです。

  • Kubernetes
    サポート対象

    Kubernetes

    クーバネティス。Dockerをはじめとするコンテナ化されたアプリケーションの展開、スケーリング、管理を行うオープンソースのプラットフォームです。

  • cri-o

    cri-o

    cri-oはKubernetes Incubator Projectとして開発された、Kubernetes実装のコンテナランタイムです。

オープンソースに関する様々な課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。