🐳

Docker Subscription Service Agreement

2021/09/02に公開

Docker Desktop 4.0のリリースと共に新たなサービス利用規約、Docker Subscription Service Agreement(以下DSSAと略す)が発表された。

前提知識

まず利用規約の前にいくつか基本的な事をおさらいしておこう:

  • DockerはDocker, Inc.が開発し配布しているソフトウェア
    • なので基本的にはプロプライエタリソフトウェア
  • その一部はOSSライセンス(Apache License 2.0)で配布されている
    • この部分はmobyとも呼ばれる
    • MicrosoftのVisual Studio Codeと同様にコア部分をOSSとして提供する一方で、それをパッケージ化して配布及びマネージドサービスとして提供する部分はプロプライエタリな形を維持する方式
  • コンテナランタイム、つまり仮想化とそれを操作するAPI群はOS(Windows, Linux)が提供しており、Dockerはこれらを使ってコンテナ仮想化を実現している
    • Linuxではcgroupsを使ったプロセスレベルのリソースの名前空間管理によって実現している
    • WindowsではHyper-Vを使ったHyper-V containerとLinuxと同様のプロセスレベルの仮想化がOSで提供されており、Dockerはそれぞれを使用できる
    • 他のコンテナランタイム、例えばRedHatが主導するpodmanも同様にOSの機能を使用している
  • コンテナを配布するサーバーはRegistryと呼ばれる

Docker, Inc. の提供するソフトウェア・サービス

Docker Engine

https://docs.docker.com/engine/
これはDSSA必要なくmobyの一部としてApache License version 2.0で引き続き利用できる。

Linuxユーザーにとって最もなじみのあるであろうdockerコマンド、及びdockerコマンドと通信しコンテナの面倒を見てくれるデーモンdockerdはこのDocker Engineの一部である。ちなみにDockerのRootless化というのはdockerdがroot以外の権限で実行できるようになったことを指す。docker/dockerdのクライアント+サーバー構成の為、dockerコマンドはそのホスト以外で動作しているdockerdに対してネットワーク経由で命令を発行できる。これにより例えばWindowsホスト上からHyper-V内のLinuxで動作しているdockerdに命令を発行するなどが可能になる。

Docker Compose (v1)

https://docs.docker.com/compose/
これもDSSA必要なくdocker/composeで開発されApache License version 2.0で引き続き利用できる。

docker-composeコマンドは複数のコンテナと仮想ネットワークを構築し、コンテナオーケストレーションを実現するためのツールである。元々3rdパーティ製のPythonスクリプトであったものがDockerの管理下に入ったもので、これだけ設定ファイルや使い勝手が大きく異なったのはそのためである。なおGoで書き直されたdocker compose v2がDocker Engineに含まれているのでこれ(v1)は時機に役目を終えるはず。

Docker Desktop

https://docs.docker.com/desktop/

Docker Desktop is an easy-to-install application for your Mac or Windows environment that enables you to build and share containerized applications and microservices. Docker Desktop includes Docker Engine, Docker CLI client, Docker Compose, Docker Content Trust, Kubernetes, and Credential Helper.

これはDSSAが必須になる、Windows/macOS向けの全部入り一括配布パッケージ。Docker Engineに加えてKubernetesもセットアップしてくれる。Hyper-Vバックエンド・WSL2バックエンドのLinuxコンテナ環境の構築に加えWindowsコンテナも使えるようになるため、現状Windows/macOSではDockerをセットアップする最も適切な手段だと言える。自分でDocker Engineをインストールしたりせずにおとなしく(場合によっては課金して)これを使うのがほとんどの人にとって有益。例えばHyper-V上のLinuxにDocker Engineをインストールし、Windows側でDocker CLIを自分でセットアップしてHyper-Vの仮想ネットワーク経由でdockerdを叩いて使うならDocker Desktopは使わずに済むはずだが明らかに労力に合わない。

Docker Hub

https://docs.docker.com/docker-hub/
Docker Registryの公式マネージドサービス。Publicなイメージをpullするだけなら認証する必要はないが、pushしたりPrivateなリポジトリにpush/pullする場合にはログインが必要で、この際にDSSAを承認することが必要。

GitHubで編集を提案

Discussion