有償化される Docker Desktop をやめて minikube を使う


はじめに

他の記事でも書かれていますが、 Docker Desktop が有償化されます

Docker Engine や CLI は無償なのでサーバーでの利用上は問題ありませんが、
macOS は基本的に Docker Desktop でのインストールが推奨されているため、
私も使っていました

Docker Desktop は GUI でコンテナの操作ができますが、
基本的にコマンド操作するので不要です

Docker Desktop のためだけに費用を払うのはもったいないですね

  • 有償化の対象外
    • 従業員 250 人未満 かつ 年間売上 1000万ドル未満
    • 個人利用
    • 教育目的の利用
    • 非商用利用
    • オープンソースプロジェクト
  • 有償化の開始日: 2021年8月31日
  • 猶予期限: 2022年1月31日

ということなので、今年のうちに Docker Desktop を使わずに済むようにします

以下のブログを参考にしました

2021/11/1 追記

以下の記事に追加の注意点を記載しました

Docker Desktop のアンインストール

Docker Desktop を起動し、右上の虫マークから Troubleshoot を開きます

一番下にある Uninstall をクリックするとアンインストールできる、はずですが

なぜかうまくアンインストールできなかったため、結局 Applications から直接ゴミ箱へ送りました

minikube インストール

minikube と、仮想化のための hyperkit を Homebrew でインストールします

brew install hyperkit
brew install minikube

hyperkit を入れるとき、先に Docker Desktop をアンインストールできていないと
brew link でエラーになります

Docker Desktop をゴミ箱に入れたあとに改めて brew link すれば問題ありません

brew link hyperkit

docker インストール

今までは Docker Desktop 内の docker CLI を使っていたので、
改めて Homebrew で CLI をインストールします

brew install docker
brew install docker-compose

minikube 起動

今までは Docker Desktop を起動させてから docker コマンドを使っていましたが、
これからは minikube が動いている必要があります

minikube start

また、 docker コマンドに minikube を認識させる必要があるので、以下を実行します

eval $(minikube docker-env)

minikube の IPアドレス を hosts に書き込んでアクセスできるようにします

echo "`minikube ip` docker.local" | sudo tee -a /etc/hosts > /dev/null

docker を動かしたいだけなので、余計なものを止めておきます

$ minikube pause
⏸️  Pausing node minikube ...
⏯️  次のnamespaceに存在する 14 個のコンテナを停止しました: kube-system, kubernetes-dashboard, storage-gluster, istio-operator

docker 実行

試しに Hello World を動かしてみます

$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
...

エラーが出なければ、とりあえず docker は大丈夫です

認証ヘルパー変更

docker は動いたものの、 docker-compose 実行時にエラーが、、、

$ docker-compose up
[+] Building 0.9s (3/3) FINISHED
 => [internal] load build definition from Dockerfile                                                              0.0s
 => => transferring dockerfile: 31B                                                                               0.0s
 => [internal] load .dockerignore                                                                                 0.0s
 => => transferring context: 2B                                                                                   0.0s
 => ERROR [internal] load metadata for docker.io/zenika/kotlin:1.4.20                                             0.8s
------
 > [internal] load metadata for docker.io/zenika/kotlin:1.4.20:
------
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: rpc error: code = Unknown desc = error getting credentials - err: exec: "docker-credential-desktop": executable file not found in $PATH, out: ``

認証を行なっていた docker-credential-desktop もゴミ箱に入ったので、認証できなかったようです

こちらのブログを参考に、認証できるようにしました

代わりのものをインストールし、設定を変更します

brew install docker-credential-helper

~/.docker/config.json を以下のように変更

  • 変更前
{
  "credsStore" : "desktop"
}
  • 変更後
{
  "credsStore" : "osxkeychain"
}

これで docker-compose も動くようになりました

おわりに

ひとまず、今まで通り macOS でも無償で docker を使うことができるようになりました

あとは Windows を近々どうにかします

また、以下の記事に追加の注意点を記載していますので、ご参照ください