0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Apple Silicon Mac上でDocker Desktopのアンインストールに四苦八苦した話

Posted at

はじめに

最近、Docker Desktopのバージョンアップ後に思わぬトラブルに見舞われました。アップデート後にDocker Desktopが正常に動かなくなってしまい、「まあ、一度アンインストールして再インストールすれば解決するだろう」と軽い気持ちで試したところ...これが意外と曲者でした。
Apple Silicon搭載のMacbookでのDocker Desktopアンインストールの奮闘記をシェアします。

事の発端

ある日、いつも通り開発作業中にdocker-composeコマンドを実行しようとしたところ、突然

zsh: command not found: docker-compose

というエラーが。「あれ?おかしいな」と思い、brew listでdockerの存在を確認したところ、リストになく、どうやらいつの間にか消えていたようです。

不思議なのは、dockerをアンインストールした記憶がまったくないこと。普段使っているし、Docker Desktopのバージョンも定期的にアップグレードしているのに、コマンドラインツールだけが消えているという謎の状況...

そしてさらに不思議なことに、Docker Desktopアプリ自体は起動するんです。でも使おうとするとエラーだらけで使い物にならない。

「よし、一旦アンインストールして再インストールしよう」そこから長い戦いが始まりました。

アンインストールの試行錯誤

まずは公式の方法でアンインストールを試みました

% /Applications/Docker.app/Contents/MacOS/uninstall
Uninstalling Docker Desktop...
Error: unlinkat /Users/**/Library/Containers/com.docker.docker/.com.apple.containermanagerd.metadata.plist: operation not permitted

権限が足りないのかな?と思い、sudoをつけて実行

**@MacBook ~ % sudo /Applications/Docker.app/Contents/MacOS/uninstall

Password:
Uninstalling Docker Desktop...
Error: unlinkat /Users/**/Library/Containers/com.docker.docker/.com.apple.containermanagerd.metadata.plist: operation not permitted

うーん、sudoでもダメか...

もしかしてDocker関連のプロセスが動いているからかな?と思い、確認してみました

**@MacBook ~ % ps aux | grep -i docker
**           37481   0.0  0.0 410059184    224 s004  R+   12:43PM   0:00.00 grep -i docker
**           89943   0.0  0.1 411479120  22432   ??  S    11:36AM   0:00.28 /Users/**/.vscode/extensions/docker.docker-0.4.10-darwin-arm64/bin/docker-language-server-darwin-arm64 start --stdio
**           89942   0.0  0.2 1621816336  34336   ??  S    11:36AM   0:00.56 /Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) /Users/**/.vscode/extensions/ms-azuretools.vscode-docker-1.29.5/dist/compose-language-service/lib/server.js --node-ipc --node-ipc --clientProcessId=23443
**           89941   0.0  0.2 1621824528  38240   ??  S    11:36AM   0:00.62 /Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) /Users/**/.vscode/extensions/ms-azuretools.vscode-docker-1.29.5/dist/dockerfile-language-server-nodejs/lib/server.js --node-ipc --node-ipc --clientProcessId=23443

あ、なるほど!VSCodeでDockerのプラグインを使っていたので、そこからDockerプロセスが起動していたんですね。VSCodeを終了させて再度チャレンジ

**@MacBook ~ % ps aux | grep -i docker
**           37726   0.0  0.0 410724112   1488 s004  S+   12:44PM   0:00.00 grep -i docker
**@MacBook ~ % sudo /Applications/Docker.app/Contents/MacOS/uninstall

Uninstalling Docker Desktop...
Error: unlinkat /Users/**/Library/Containers/com.docker.docker/.com.apple.containermanagerd.metadata.plist: operation not permitted

まだダメ...これはよりシステム的な権限の問題のようです。ここで方向転換して、Qiitaの記事を参考に権限関連の対応を試みました

sudo chflags -R nouchg ~/Library/Containers/com.docker.docker/
sudo chmod -R 755 ~/Library/Containers/com.docker.docker/

やはり権限変更もできない...。Apple Siliconマシンのセキュリティは本当に厳しいですね。

突破口を見つける

ここから「力技」でいくことにしました。

まずはDocker関連のキャッシュディレクトリを削除

rm -rf ~/Library/Caches/com.docker.docker

次に、Docker関連のシステムファイルを強制削除

sudo rm -rf /Library/PrivilegedHelperTools/com.docker.vmnetd
sudo rm -rf /Library/LaunchDaemons/com.docker.vmnetd.plist

最後に、アプリケーション自体を削除

sudo rm -rf /Applications/Docker.app

そして...ついに削除完了!複数のアプローチを組み合わせることで、しぶとく残っていたDocker関連ファイルをやっつけることができました。

再インストール

きれいさっぱりになったところで、Homebrewを使って再インストール

brew install --cask docker

これでDocker Desktopが再びきちんと動くようになりました。

あとがき

今回のトラブルは、単なるアンインストールのはずが思わぬ難所となりました。Apple Siliconマシンでのシステム権限の厳しさを改めて実感する出来事でした。

最近のmacOSはセキュリティが強化される一方で、時に私たち開発者を悩ませることがありますね。特にシステムファイルへのアクセス制限は、安全性を高める反面、こういったトラブルシューティングを難しくしています。

この記事が同じような問題で悩んでいる方の助けになれば嬉しいです。開発環境のメンテナンスって、時に予想外の時間がかかることがありますが、そんな時はゆっくり腰を据えて、一つずつ試していくのが大事だと感じました。

また、トラブルが起きた際には、コミュニティの知見(今回はQiitaの記事)を活用することも解決の糸口になります。誰かの経験が次の誰かの助けになる——そんなエンジニアコミュニティの素晴らしさを改めて感じた出来事でした。

また、Dockerについてネット検索していると興味のある記事があったのでシェアします。

余談

ここからは完全な余談ですが...

Macを使うエンジニアといえばMacbook Proというイメージがありますが、実は私はAirの愛用者です。なぜかって?薄さと軽さが気に入っているんです。

正直なところ、機械学習や重たい動画編集をメインにしない開発者なら、最近のAirモデル(特にM1/M2以降)は十分すぎるほどのスペックがあると思います。たまに「Airじゃ足りないよ」と言われることもありますが、実際の開発現場でAirが原因で本当に困った場面にまだ遭遇したことがありません。

いつかPro派の方に、「これはAirだと無理だよ」と胸を張って言える具体的な開発シナリオを見せてもらいたいものです。それまでは、この薄くて軽いAirで快適に開発を続けていきます...たとえDocker関連で四苦八苦することがあっても(笑)

関連資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?