マジかよ、有料になるのかよ。と思ってから気づいたら、2022/02/01。有料になってしまいました。どうしようというあなた。もう、この記事を読んでいる時点で遅いです。
私は職場でDocker Desktop使っているが、有料になるときは軽く思っていた。
「どうせ、GUIで操作しないし。docker ps
とか使えればなんとかなる。」と
でも、そうじゃなかったんですよ。困ったんですよ。という話をしていきます。
結論
Rancher 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を選んでみてはいかがでしょうか?
以上
コメント