LoginSignup
4
2

More than 1 year has passed since last update.

Docker Desktopが有料化?なら、Minikubeを使えばいいじゃない

Last updated at Posted at 2021-11-18

はじめに (宣伝アリ)

なんと、一週間後の11月25日に山Pの写真集が発売されます!!
最初で最後の写真集らしいので楽しみですね☆ wkwk

はい、というわけで (どういうわけだ)
「パンがなければケーキを食べればいいじゃない」
「Docker Desktopが無いならMinikube(HyperKit)を使えばいいじゃない」

別にMinikube × HyperKitじゃなくても、有料化回避の記事でよく見るMultipassでもいいんですけど、結局あれCLIとかDockerHostの設定とか自前でやるじゃないですか?
そういう諸々が面倒でしたのでMinikubeを使うようにしました。

※ これはIntel Mac向けの記事です。
Docker Desktopが有料化されるのは組織人数が250人以上、もしくは年間売り上げ1000万ドル以上の組織または個人です。

Docker Engineについて

前提知識として、Dockerは実はClientとDaemonでソフトが分かれています。

そのIssueがこちらです

以下の公式Docに書いてあるように今の所WindowsとLinux用にDaemonは提供されていますが、Macには提供されていません (ぴえん)
https://docs.docker.com/engine/install/binaries/

Static binaries for the Docker daemon binary are only available for Linux (as dockerd) and Windows (as dockerd.exe).

DockerのIssueで「Docker for MacはVM(HyperKit)で動いてるやん?だからわざわざ、エンジンをMac上で起動する必要ないやろ。」って言ってます。

ClientはMac用にも配布してくれてるみたいでこちらでBinaryで提供されてるみたいです。

Docker client are available for Linux, Windows, and macOS (as docker).

Docker DesktopからDocker CLIに移行する手順

まず、Docker DesktopのダッシュボードからDocker Desktopをアンインストールします。(当たり前)
スクリーンショット 2021-11-18 10.27.37.png

minikubeをインストールします。

brew install minikube

そのまま起動しようとするとhyperkitが無いよと言われます。

スクリーンショット 2021-11-18 10.52.14.png

hyperkitをインストールします。

brew install hyperkit

minikubeを起動します

minikube start
# ※ configセットしてないのでデフォルト設定でリソースが取られます。
# CPU=2, Memory=6GB, Disk=20GB

ホストマシン側にもDocker Clientが欲しいのでインストールします。(sshしたくない)

brew install docker docker-compose

スクリーンショット 2021-11-18 11.00.43.png

Compose is now a Docker plugin. For Docker to find this plugin, symlink it

docker-composeはpluginになったんで、pluginとして使うにはシンボリックリンク貼ってって言ってます。
なので、シンボリックリンクを貼ります。

mkdir -p ~/.docker/cli-plugins
ln -sfn /usr/local/opt/docker-compose/bin/docker-compose ~/.docker/cli-plugins/docker-compose

Docker CLIで利用する環境変数をevalでセットします。

echo 'eval $(minikube docker-env)' >> ~/.zshrc
source ~/.zshrc

シェル起動時に読み込まれるんじゃなくてお試しでやってみたい方は以下だけ打って下さい。

eval $(minikube docker-env)

k8sコンテナを利用しないのに起動しっぱなしになるので停止します。

minikube pause

これでセットアップは完了です!

試しにDockerコンテナ起動してみる

以下の記事で作ったプログラムで試してみます。

まず、Dockerfile or compose.yamlにVolume設定を記述していた場合、先にVMとマウントしてあげる必要があります。

# Dockerfileが存在するDirectoryまで移動して
minikube mount $PWD:$PWD

Current Directoryをマウントすることで、composeで起動した時にDockerに渡されるPathとマウント先のPathが一致するのでコンテナ内の/hogeにもマウントされるという仕組みです。

volumes:
  - .:/hoge

mountが終わったらDockerコンテナを起動します。

# docker run -v ...
# OR
docker compose up -d

VMのIPを調べます。

minikube ip # => xxx.xxx.xxx.xxx

返ってきたIPを使ってホストマシン上からcurlを飛ばしてみます。

スクリーンショット 2021-11-18 11.56.48.png
ちゃんとレスポンスが返ってきましたね!

毎回IPを指定するのが面倒な場合はminikube起動時に以下のコマンドを使用してhostsに書き込んで下さい。
Macのhostsはmulti onなので、複数のIPが割り当てられていても名前解決してくれます。
(hostsは汚くなりますが ...)

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

local.dockerにcurlを飛ばすと... 無事通りました!
スクリーンショット 2021-11-18 12.02.25.png

あとがき

個人的にはインストールから動作確認まで非常に楽だったな〜という印象なのですが、皆さんは如何でしたでしょうか?
この記事が皆さんのお力になれれば幸いです ☆

採用PR

アプリケーションのコンテナ化・二次元コンテンツに興味がある、もしくはチャレンジしてみたいという方は是非一緒に働きましょう!

4
2
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
4
2