フューチャー技術ブログ

Docker Desktop有償化!どのライセンス契約する?

大きな組織でのDocker Desktop有料化が発表されて、いよいよFreeからの切り替え期限が今月末に迫っています。「Docker DesktopだからLinux版は無償だからWSL2に入れれば無料」みたいな解説もされていますが、Linux版のDocker Desktopもすでにベータリリースされており、そのうちLinux版も遅かれ早かれ有償化されるかと思います。

で、ライセンスもいくつかあるけど、どれを選べばよいのかを検討した記録を公開します。なお、2022/01時点の情報を元に書いており、最新情報はDockerのサイトをご覧ください。

https://www.docker.com/pricing

有償ライセンスは3種類

Freeはフューチャーの規模では使えませんので、除外してみると、Pro, Team, Businessがあります。2022年1月時点の一人/月あたりの金額は以下の通りです。

ライセンス一覧
Type 年契約 月契約 メモ
Pro $5 $7 個人ごとの契約?
Team $7 $9 シート数契約。組織に人を追加したり外したりは比較的自由にできそう。最初の5ユーザーはProと同じ金額。
Business $21 $21 おそらくTeam同様?ボリュームディスカウントがあるらしい

外部公開しないのであれば、イメージを置いておく機能とか権限管理とかはまああんまり大事じゃないというか、AWSを使うならECR、GCPを使うならGCRと、コンテナレジストリは代替があるし、実際にクラウド環境にサービスデプロイするならどうせそっちを使うことになりますし、大きな会社だとNexusとかを社内に立ててたりもするでしょう。GitHubのもありますし。なのであんまり大事じゃなさそうです。もちろん、そのあたりは会社のビジネスにもよるのでそこは各自判断で。

Proアカウントはボタンを押すといきなりクレジットカード入力画面が出てきます。個人ごとにチャージですので、会社で全員が各自ぽちぽち購入申請を上げて・・・みたいなのが必要です。全員がコーポレートカード持っているとかであればこれでもいいかもしれません。

支払い方法

Teamは組織名を決めて、人数(シート数、最小5ライセンス)を入れて、その後クレジットカード番号を入れることになります。複数人数分まとめて支払える点がProよりも良いですね。ただ、組織名はユニークでなければならず、チームごとに決済を分けたい、となるとチーム名も分かれることになるし、複数チームに所属する人はその分お金がかかるというのはデメリットです。まあDocker Hubにイメージをpushしたり、そこでプロジェクトのイメージ管理をしようとかしないで、ローカルでDocker Desktop使うだけなら、仕事上は複数チームでも1つのTeamに所属してお金を払っていたらまあ問題はないかと思います。大きなチーム(org)を内部でチームに分けることは可能っぽく、その場合は複数チームに入ってもお金は重複してかからなそうなので、なるべく多くのチームにして支払いをまとめたほうがよさそうです。プロジェクト按分とかを事後に行う必要があると思いますが。

なお、マニュアルを見ると、Teamではシート数が固定で、だれを入れるかは自由にあとから変更できるので、プロジェクトのメンバー入れ替えとかにも対応できそうです。シート数の増減は可能(増加は日割りで元の契約期間にプラス、減少は次回の支払い時にその分減額、月払い、年払い混在は不可)みたいな感じのようです。

https://docs.docker.com/subscription/add-seats/

組織設定

Businessは試してないですが、おそらく営業とやりとりして見積して・・・という流れになるかと思います。請求書払いができるってのがBusinessのメリットしてあげられていますね。あとは、長らくComing Soonだったシングルサインオンが1/7ぐらいに突然やってきたので、それがあったほうが管理が楽、というのがあればBusinessがいいんじゃないでしょうか。

フューチャーのうちの部署ではとりあえず組織とかプロジェクト(フューチャーグループ各社をまたぐ場合)ごとに申請しよう、ということになったので、各プロジェクトごとにTeamでの申請かな、と思っているところです。実運用始まって実際にアカウント数とか見えてきたらどのぐらいディスカウントしてもらえるか問い合わせたうえでBusinessにアップグレードでもいいかもしれません。

プロジェクト参画のリードタイムを減らすために

プロジェクトに参画してすぐで購入申請のリードタイムとか考えると、Dockerなしでもできる手立ては用意した方がいいのかな、と思っています。今のところは候補としてはpodmanですかね。BUILDKITは使えないようですが、docker-composeが使えるようにDocker互換性がさらに増えていますし、Kubernetesのマニフェストも食えます。

https://rheb.hatenablog.com/entry/podman3_docker_compose

もちろん、podmanを最初から全員使うという手もあるかもしれませんが、どうしても情報がまだまだ少ないし、まずは安定していて知見もたまっているDockerを使いつつ、アプリ本体をビルドとか開発環境整備用途ではなくて、ビルド済みのミドルウェアの起動、アプリはローカルネイティブに起動ぐらいの用途にとどめておこうかな、と考えているところです。