開発会社が Docker のライセンスに準じて正しく使うために
2023/09/25

Docker Desktop は、大企業(従業員が 251 人以上、または、年間収入が 1,000 万米ドル以上の会社)が使う場合には、有料になるが、SI 事業における小さな開発会社は、どうなるのだろうか?

弊社は、この小さい開発会社なので、自社プロダクトを開発する分には、無償で使えるのだけど、受託開発で、依頼元の企業が大企業の場合、どうしたらよいのか、WEBで検索して調べたのだが、よくわからなかった。

仮に、開発会社がライセンスを持っていれば良いとして、納品したあとの保守を依頼元企業の保守チームが行う場合には、ライセンスが発生するので、予め Docker を開発に使うことに合意しておく必要はありそうだ。

WSL の Ubuntu でのみ Dcoker を使う

でも、有償なのは、 Docker Desktop であって、Docker Engine は無償で使ってよいので、 Docker Desktop を使わないで、 Docker を使う方法を調査した。

答えは簡単で、 Windows では、WSL の Ubuntu に apt コマンド等で docekr をインストールしたらよい、それだけだった。

Docker Desktop を使わないことのマイナス面は、なんだろうか?

  • Dockerを操作する GUI が使えない
    「Use the WSL 2 based engine」で有効化される機能が使えない。
    これは、未調査なので、私の想像だけど、Windows と WSL とのメモリの共有はできないのではないかと想像する。
    他にも、ホストOSの Windows と連携して動く便利なものが動かないのだろう。
  • PowerShell や GitBash 等から docker コマンドを使えない
  • VSCode の devcontainer で使うときにひと手間かかる

VSCode の devcontainer の使い方

devcontainer が使えないわけではない。

WSL 側にも VSCode を入れてあるとしても、あれは vscode-server という headless のサーバー機能なので、Windows 側の VSCode が必要である。

そして、 VSCode が devcontainer を開始するときに、docker コマンドを使うようで、このコマンドを実行するのは、Windows 上からなので、Docker Desktop を入れてないと、エラーになる。

Docker Desktop が無い状態での devcontainer の使い方は、WSL側で、docker-compose 等を起動しておいて、 VSCode からは、そのコンテナにアタッチする形で、今までとほぼ同じように使える。

そして、 devcontainer cli というものが GitHub で公開されていて、これを使うと、以下のコマンドで、devcontainer を起動してくれる。

devcontainer up --workspace-folder .

devcontainer の設定は、 .devcontainer/devcontainer.json などで、設定しておくけど、これを読み込んで、コンテナを起動をしてくれる cli ツールである。

docker-compose で起動すると、 devcontainer.json に記載された extension が起動時にインストールされないので、この cli も使った方がよいだろう。

Docker Desktop の代替

ということで、Windows でも使い方を間違わなければ Docker は使って問題ない。

ちょっと、残念なのは、WindowsとWSLとのメモリの共有がされないので、WSLのディストリビューションに対してのメモリを、手動で割り当てておく必要がある。

あと、Docker Desktop の代替として、Podman というものがあるのだけど、これも少し使ってみたが、非常に荒っぽい言い方をすると、 上記のやり方を知っていれば、使う必要はなさそうだった。あまりメリットを感じなかった。

Podmanのインストール手順に従って、インストールを進めていくと、まずは、Podman Desktop(Docker Desktopのようなもの)が インストールされて、さらに GUI から、数ステップの操作を進めていくと、WSL に podman のディストリビューションの linux がインストールされて、 その linux の中に、Docker Engine 等の Docker 関連の OSS がインストールされて、コンテナの状態が操作できるようになる。

ただ、まだ枯れてない。
私が持っているプロジェクトの1つが、build できなかった。(buildが終わらない)
これがちょっと痛い!

Windows との連携機能が厚いわけでもなく、単なるダッシュボードみたいなもので、旨味が薄いので、 いまのところ Podman は使わなくてよいという判断である。 ホストOSとのメモリの共有ができるくらいの機能実装が出来るようになったら、再度、試してみることにしよう。

※ もしも、使い方が悪くて、動かないだけだったら、すみません。

最後に

いままで、合意のないまま Docker Desktop を使っていた人は、いったん、アンインストールして、上記のとおり、 linux 内でのみ docker を使うようにしましょう。

最近の記事タグ

\(^▽^*) 私たちと一緒に働いてみませんか? (*^▽^)/

少しでも興味をお持ちいただけたら、お気軽に、お問い合わせください。

採用応募受付へ

(採用応募じゃなく、ただ、会ってみたいという方も、大歓迎です。)