Docker Desktopの代替方法
Docker Desktopが有料化ということで、Docker Desktopが使えない場合、代替方法についてのメモ。
Dockerの仕組み
普段使っているDocker=Docker Engineであり、Dockerデーモンによって構成されるクライアント・サーバーアプリケーションである。このDocker EngineはLinux上でしか対応していないので、MacやWindowsでは直接起動できない。そのためDoker Desktopで仮想環境を構築して、そこで起動している。
なので、仮想環境を用意すれば良いということ。
今回はVirtualBoxとDocker Machineを使って起動する。
前提
Docker Desktopがインストールされていない環境の前提です。
Docker DesktopをインストールするとDocker Engineとかも一緒にインストールされてしまっているので、この方法を実行するとうまくいかない可能性があります。
こちらの方法を実行する前にアンインストールすることを推奨します。
1. Homebrew
Homebrew使ってインストールしていくので、以下を参照してインストール。
2. Dockerインストール
HomebrewでDocker(Docker Engine)をインストールします。
caskのDockerはDocker Desktopなので注意。
brew install docker
3. Docker Machineをインストール
Docker Machineは仮想マシン上にDocker Engineをインストールするツール。
これを使ってVirtulboxにDockerをインストールします。
brew install docker-machine
4. ViutualBoxのインストール
仮想マシンを起動するためにViutualBoxをインストールします。
以下からインストールしてください。
5. Docker Machineを使って仮想マシンを作成
準備ができたのでDocker Machineを使って仮想マシンを作成します。
まずは仮想マシンの一覧を見てみます。
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
何も作成されていないのが確認できます。
仮想マシンの作成は以下のコマンドで作成します。
docker-machine create --driver virtualbox default
default
は仮想マシンの名前になります。
既に default
が存在している場合は別の名前にします。
作成後にもう一度 ls
してみます。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Running tcp://192.168.99.100:2376 v19.03.12
作成が確認できました。
6. 環境変数を設定
Dockerコマンドでコンテナを構築する前に、Dockerの接続先等の環境変数をセットする必要があります。
以下のコマンド実行で一括設定できます。
eval "$(docker-machine env default)"
docker-machine env default
で必要な環境変数がエクスポートされるので上記で簡単にセットできます。
仮想マシンの再起動やシェルの再起動で毎回実行が必要になります。
毎回の設定が面倒な場合以下のように.zshrc
とかに記載しても良いかもしれないですね。
echo 'eval "$(docker-machine env default)"' >> ~/.zshrc
7. コンテナを起動してみる
これでおおよそ完了したのでコンテナを起動してみます。
docker pull swaggerapi/swagger-editor
docker run -d -p 8080:8080 swaggerapi/swagger-editor
swagger-editorを起動してみました。
確認してみましょう。
接続先は仮想マシンのIPを指定する必要があります。
以下のコマンドでわかります。
docker-machine ip default
192.168.99.100
まあ、docker-machine ls
で表示されたURLのIPアドレスとと同じになると思います。
http://192.168.99.100:8080
で接続すると確認できるかと思います。
8. localhostで接続したい
いちいちIPアドレス覚えておくのも調べるのも面倒なので、localhostで繋ぎたいと思ったはず。
そんなときはVirtualBoxのポートフォアーディング使いましょう。
VirtualBoxを開くとdefaultマシンがあるのでそちらの設定を表示。
”ネットワーク”の”アダプター1”で”高度”を開いて怪しいフォントの”ポートフォアーディング”を選択。
ここにポート設定を添付の画像のように記載。
今回はlocalhost(127.0.0.1)の8080ポートを仮想マシンの8080ポートに転送する。
これでOKをクリックすれば完了です。
http://localhost:8080
いざ接続してみましょう。
成功しました!
9. 仮想マシンの起動とか停止
しばらく使用しない場合や都度都度実行&停止したい時は以下を仮想マシンを停止します。
仮想マシンを停止したい場合は以下を実行します。
docker-machine stop default
起動は以下。
docker-machine start default
おわり
上記でだいたいできるとは思っています。
まあ、Docker Desktop利用できる人はそのままDocker Desktop使った方が簡単であるし、Docker応援するためにお金は払った方が良い。
参考