Featured image of post Docker for macが「starting」のまま起動しない時の解決方法

Docker for macが「starting」のまま起動しない時の解決方法

MacBook Pro 2019のMojaveでDocker for macが「Docker Desktop is starting」のまま起動しないときの回避策。VirtualBoxを入れてdocker-machineでdefaultを作成し、環境変数を登録して自前のDockerホストで動かします♪

1109文字

Docker for macが動かない

先日、MacBookPro 2019を購入したのですが、Docker環境を整えようとHomebrew CaskDocker for macを入れて起動しようと思ったのですが、なぜかDocker Desktop is Starting...のまま先に進まない現象が発生しました。orz

特に変な作業をしたわけでもないため、なぜなのか原因が分からず解決出来なかったため、自前でDockerホストを動かすことでなんとかDockerを使えるようになりました。

今回はその時の対応方法を備忘録として記事にまとめてみようと思います。

手順

前提

Docker関連については、以下のコマンドのみ実行し、dockerdocker-composedocker-machineなどはHomebrewでは入れずにDocker for macの中でインストールさせています。

[adsense-responsive]

また、環境としてはそれぞれのコマンドは使えるが、以下のようにDockerへの接続が出来ない状態となっています。

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

Virtualboxのインストール

解決するには、自前でdocker-machineでDocker Engineを整える必要がありそうでした。
なので、まずはvirtualboxをインストールしましょう。

brew cask install virtualbox
==> Caveats
To install and/or use virtualbox you may need to enable its kernel extension in:
  System Preferences → Security & Privacy → General
For more information refer to vendor documentation or this Apple Technical Note:
  https://developer.apple.com/library/content/technotes/tn2459/_index.html

==> Satisfying dependencies
==> Downloading https://download.virtualbox.org/virtualbox/6.0.8/VirtualBox-6.0.8-130520-OSX.dmg
Already downloaded: /Users/blogenist/Library/Caches/Homebrew/downloads/130d78b88001e8d144b4c39fedf0caa739515abf930f870f90f440eaf644ea8c--VirtualBox-6.0.8-130520-OSX.dmg
==> Verifying SHA-256 checksum for Cask 'virtualbox'.
==> Installing Cask virtualbox
==> Running installer for virtualbox; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are ignored.
Password:
installer: Package name is Oracle VM VirtualBox
installer: Upgrading at base path /
installer: The upgrade was successful.
🍺  virtualbox was successfully installed!

docker-machineにdefaultを作成

次に、dockerr-machineにdefaultのDocker Engineを作成します。
以下のコマンドで作成しましょう。

docker-machine create --driver virtualbox default
Running pre-create checks...
Creating machine...
(default) Copying /Users/blogenist/.docker/machine/cache/boot2docker.iso to /Users/blogenist/.docker/machine/machines/default/boot2docker.iso...
(default) Creating VirtualBox VM...
(default) Creating SSH key...
(default) Starting the VM...
(default) Check network to re-create if needed...
(default) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env default

環境変数の登録

次に、先ほど作成したdefault環境の各変数を以下のコマンドで反映しましょう。
今回はfish shellを使っているので以下のコマンドとなります。

[adsense-responsive]

反映コマンド
eval (docker-machine env default)

ここまで行うことで、以下のコマンドでDockerへの接続が通るようになります。

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

確認

では、実際に適当なdocker-compose.ymlを作成して起動してみましょう。

docker-compose up -d
Creating network "sample_default" with the default driver
Building app
Step 1/7 : FROM node:10.8.0-stretch
...
()
...
Successfully built 8cb3c66f9f22
Successfully tagged sample_app:latest
Creating sample_app_1 ... done

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
092031f2edfe        sample_app          "node"              4 seconds ago       Up 4 seconds        0.0.0.0:3000->3000/tcp   sample_app_1

正常に動きましたね♪

終わりに

Docker for macが使えないときはどうなるかと思いましたが、とりあえずこれでDockerを使った開発は出来そうなので一件落着です。

原因については分かったら追記しますが、同じようにお困りの方がいましたらぜひ参考にしてみてください♪