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 を使うようにしましょう。
関連記事
- 2021/03/30 Docker Desktop WSL 2 バックエンドの使い始め WSL2とDockerを使って、もう1歩 DevOps を推し進めたいと思ってるんだけど、いろいろあるねぇ・・・ということを、ご紹介します。
- 2018/03/04 Jupyter Notebookを普段使いして仕事効率化する 機械学習の試行過程で使われているJupyter Notebookを普段の仕事の中でに使ってみたら、すごく効率的なことがわかりました。ご紹介します。
- 2017/05/29 非公開サイトをLet's EncryptなDockerコンテナでお手軽にSSL化する方法 | 開発環境のスピード構築のために アクセスを限定した非公開サイトを運用していて、それをLet's EncryptでSSL化したいけど、コマゴマ面倒くさいという方に、お手軽にできるレシピをご紹介します。
- 2017/03/18 社内の開発環境でDockerイメージをミラーリングする方法 | 開発環境のスピード構築 社内LANの中に、Docker用のプロキシーを配置して、docker pull の実行時間を、最適化する方法をご紹介します。
- 2017/02/21 開発環境を素早く構築する - 自社内での開発に欠かせないスキル プロジェクトの立ち上がりをスムーズにキメるためには、開発環境の整備が、欠かせません。