Docker Desktop の代替案

マジかよ、有料になるのかよ。と思ってから気づいたら、2022/02/01。有料になってしまいました。どうしようというあなた。もう、この記事を読んでいる時点で遅いです。

私は職場でDocker Desktop使っているが、有料になるときは軽く思っていた。

「どうせ、GUIで操作しないし。docker psとか使えればなんとかなる。」と

でも、そうじゃなかったんですよ。困ったんですよ。という話をしていきます。

スポンサーリンク

結論

Rancher Desktop 使えでした。

Rancher Desktop by SUSE
Open source desktop application that provides Kubernetes, Container Management, bundled utilities on the desktop

RancherはDocker Desktopと同じようなインターフェースを持ち、Docker以外にKubernetesの操作もできます。

一番手軽で、Docker Desktopから乗り換えやすいのがポイントです。

スポンサーリンク

経緯

実は、職場で使っているPCがMacでして、どうせLinuxと同じようにCLI操作できるから問題ないっしょと思ってDockerの公式サイトからMac用バイナリファイルを持ってきて、いざインストールしてみたところ、動かないんですよ。

% docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

あー、いつものね。デーモンさんが起動してないのか。よし、デーモン起動するぞ!

ん?Macだとどうやるんだ??

公式のページをよく見ると・・・

デーモンは含まれてないやん。これどうやって起動するの?しかも、代替策としては、Docker Desktop使ってくれって書いてある。

つまり、CLIだけでも良くても直球でDockerを気軽に使えないみたいです。

ということで、CLIでもDocker使える方法の調査が始まった。

Dockerを利用する3つの方法

今回は3つ紹介していく。

VirtualBox で Linux を立ちげて利用する方法

まず初めに思ったのがこれ。Macで開発を諦めて、開発はVirtualBox上でやろう。どうせ画面などなくても良いし、Vagrantで入れてみた。

もし、少しじっくりソースコードをいじりたいときは共有フォルダ上のファイルをMac(ホスト側)のVscodeで編集すればよい。

とりあえず、Ubuntu 20.04構築して、いつも使っているもの一通り入れるか。

Dockerもkubectlもhelmも一通り入れて不満なく使える。

ただ、結構CPUやメモリをゲストOSに割り当てなくちゃ・・・と自分の非力なMacのリソース使いすぎだよな。

と試す前から薄々気づいてたけど、これは一番安定しているがなんか物足りない感じですよね。

minikube を用いて利用する方法

次にminikubeを用いてDockerを利用する方法を試してみる。

これは、こちらの記事を参考に実施。

どうやら、起動したminikubeをネットワーク越しに使う使う方法らしい。

とりあえず、brewコマンドでもインストールできるからやってみた。

brew install minikube

これだけ。簡単だわ。

minikubeをインストールした後にminikube startで起動しなかったけど、少し調べたら動いた。

その起動のために実施したコマンドが以下のもの

minikube start --vm-driver=virtualbox

このコマンドを初回起動するときだ実施した。

・・・あれ?これはvirtualbox使うのかよ笑

と、事前知識入れずにインストールしてみたけど、どうやらminikubeはvirtualboxを使った仕組みらしい。確かに、virtualboxの管理画面立ち上げたらさっき試したUbuntu以外にもminikubeというマシンが作られていた。

話を戻すが、minikubeを起動した状態で、Macに以下のコマンドを入れるだけでDockerの各種コマンドが利用できた。

eval $(minikube docker-env)

これで、Dockerコマンドが色々使えるようになった。これは良い。

しかし、これも所詮Virtualboxの仕組みを利用したものだった。

だが、これは割と良いかも。ほぼ採用。

Rancher Desktop を利用する方法

最後にRancher Desktopの方法。なんでこれを先に試さなかったのかと思ったが最終的にこれにした。

結論を言うと導入が楽、CLIだけで十分と思っていたが、Docker Desktopと同じ操作感で良い感じ。

導入方法は以下のコマンドだけ

brew install --cask rancher

そして、インストールした後、ちょっと注意が必要ですが「containerd」と「dockerd」のどちらかを選択します。

先に「dockerd」について、これが今まで通り「docker ps」とかのコマンドが使えるやつだ。

適当にコマンドを打ってみたけど、表示も挙動もDockerそのものだった。

もう一つ、「containerd」の方はKubernetesが1.19の標準コンテナランタイムにするとのことで、こちらも今後の標準になるので動向を追ってみるのもありです(実はDockerの中身もcontanerdを利用していたりと色々調べてみると興味深いかもです)。

ちなみにcontanerdの方は、nerdctl 〜と言うコマンドで操作していきます。

試しにビルドコマンドとかやってみましたが、中身は同じ処理をしているだろうが表示が微妙に異なります(基本操作やオプションは日常で使うほぼ同じ)。

dockerコマンドの場合
 ~ % docker run hello-world 
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:97a379f4f88575512824f3b352bc03cd75e239179eea0fecc38e597b2209f49a
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/
nerdctlコマンドの場合
 ~ % nerdctl run hello-world
docker.io/library/hello-world:latest:                                             resolved       |++++++++++++++++++++++++++++++++++++++| 
index-sha256:97a379f4f88575512824f3b352bc03cd75e239179eea0fecc38e597b2209f49a:    done           |++++++++++++++++++++++++++++++++++++++| 
manifest-sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4: done           |++++++++++++++++++++++++++++++++++++++| 
config-sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412:   done           |++++++++++++++++++++++++++++++++++++++| 
layer-sha256:2db29710123e3e53a794f2694094b9b4338aa9ee5c40b930cb8063a1be392c54:    done           |++++++++++++++++++++++++++++++++++++++| 
elapsed: 4.8 s                                                                    total:  6.9 Ki (1.4 KiB/s)                                       

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

と、違いはなく操作できますが、知っているか知らないかでnerd(オタク)な感じを出すことができます笑

終わり

いかがでしたか?

色々インストールしてみたけど、なんだかんだ導入障壁が低いRancher Desktopが良いと結論になりました。

なぜ導入障壁が低いこれを選んだかと言うと、

うちの職場ではあまり手順書通りのことしかオペレーションできない人が多いんですよね。。。

もし、同じような境遇の人はこのくらい楽に導入して、これまでの方法で操作できるRancher Desktopを選んでみてはいかがでしょうか?

以上

コメント

タイトルとURLをコピーしました