---
title: Docker Desktop for Mac代替のOrbStackがすごい
tags: ["Docker", "OrbStack", "kind", "MetalLB"]
categories: ["Dev", "Infrastructure", "Docker", "OrbStack"]
date: 2023-06-16T04:09:56Z
updated: 2023-06-18T23:45:47Z
---
OrbStackは軽量・高速を謳うDocker Desktop for Macの代替です。
drop-in replacementであり、Docker Desktop for Macと同じく`docker`コマンドが使えます。
https://orbstack.dev/
* リソース消費が少ない & 起動が速い
* DockerだけでなくLinux Machineも使える
* Macのホストからコンテナ/Linux Machineに直接アクセスできる(!)
自分はDocker DesktopのCPU使用率の高さが嫌でした。Docker Desktopを使っていると、Laptopが熱かったです。コンテナを使わないときはわざわざDocker Desktopを終了していました。
そこで軽量なOrbStackが気になり、乗り換えてみました。Docker Desktopに比べると確かにリソース消費量が少なく、快適に使えています。
OrbStackのWebサイトではCPU使用率の比較が次のように示されています。
実際のOrbStackはこんな感じです。
Docker Desktopはもう開きたくないので、比較はしていません。
そして、先日、MacホストからコンテナのIPにダイレクトアクセスする機能が実装されました。これはDocker Desktop for Macでは制約としてできなかったことです。
https://github.com/orbstack/orbstack/issues/33
これはDocker Desktopに対するkiller featureと言えるのではないかと思います。この機能はOrbStack 0.12で追加される予定で、~記事執筆時点での最新0.11では実装されていません~ 0.12リリースされました🎉。
上記のissueにRC版のリンクが記載されているので、この機能を先行で試すことができます。
コンテナのIPにダイレクトアクセスできると[KindでMetalLBを使って](https://kind.sigs.k8s.io/docs/user/loadbalancer/)Type=LoadBalancerで公開したk8sのServiceにMacから直接アクセスできます。
今までこれができなかったため、Kind上のアプリにアクセスするには、port-forwardを使い、Ingressを経由するなどする必要がありました。
複数のIngress Controllerを使いたいとか、コンテナの中からIngressのホスト名でアクセスすると言ったことが困難でした。
OrbStackを使うとこの問題が解消されます。
OrbStackは現在Public Beta版という位置付けで、無料で試せます。将来的には有償になるみたいです。
この機能であれば個人的にはお金を払っても使いたいと思っています。
### Install方法
```
brew install orbstack
```
~0.12.0-rc2を使う場合は以下のリンクからdmgファイルを取得してください~。 0.12リリースされました🎉
https://github.com/orbstack/orbstack/issues/33#issuecomment-1589159604
インストールすると`docker`コマンドの他に`orb`コマンドも使えます。以下のバージョンでIntell版Macで試しています。
```
$ orb version
Version: 0.12.0-rc2 (119952)
Commit: 01e4342fe1a0228b3b442be9741d21f33b53213e (v0.12.0-rc2)
```
docker contextを見ると、`desktop-linux`の他に`orbstack`が追加されています。contextを切り替えることでDocker Desktopに戻すこともできます。
```
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default Current DOCKER_HOST based configuration unix:///var/run/docker.sock
desktop-linux unix:///Users/toshiaki/.docker/run/docker.sock
orbstack * OrbStack unix:///Users/toshiaki/.orbstack/run/docker.sock
```
default contextは次のようにOrbStackを指しています。
```
$ ls -l /var/run/docker.sock
lrwxr-xr-x 1 root daemon 41B Jun 1 09:16 /var/run/docker.sock -> /Users/toshiaki/.orbstack/run/docker.sock
```
### Dockerコンテナにアクセス
定番のNginxを立ち上げます。0.12からはコンテナに直接アクセスできるのでポートフォワードが不要です。
```
docker run --rm --name nginx nginx:alpine
```
```
$ docker inspect nginx -f '{{.NetworkSettings.IPAddress}}'
198.19.192.2
```
Mac上でこのIPに対して、curlでアクセスします。
```
$ curl http://198.19.192.2
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to
nginx.org.
Commercial support is available at
nginx.com.
Thank you for using nginx.
``` アクセスできてNginxのWelcomeページが返りました! Mac上でポートフォワードせずにアクセスできて感動です。 ### Linux Machineの立ち上げ OrbStackではDockerとは別にLinux Machineを立ち上げることができます。WindowsのWSLみたいな使い方ができます。 自分はこのような用途にこれまで[Multipass](https://multipass.run/)を使用していたのですが、これも代替できそうです。 `workspace`という名前のubuntu (jammy)マシーンを立ち上げます。 ``` orb create ubuntu:jammy workspace ``` ``` $ orb list NAME STATE DISTRO VERSION ARCH ---- ----- ------ ------- ---- workspace running ubuntu jammy amd64 ``` `orb shell`でLinuxマシーンのterminalを操作できます。 ``` $ orb shell -m workspace To run a command as administrator (user "root"), use "sudo