0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IBM Cloud の ROKS 使うにあたって Mac で Docker を使えるようにした時に困ったこと(Error setting up host only network on machine start)

Last updated at Posted at 2022-06-08

Docker Desktop を使えない

料金支払い対象から逃れらない状況で docker を使いたいということで、個人的には postman 使ってみたりしていたけども、 ROKS 使うにはどうやら docker を使うのが安心だろうということで一念発起。

すでに実現されている方を頼りに

Qiita の @kyosuke5_20 さんが書かれたDocker Desktopを使わない(代替)Dockerのインストール for Mac の手順に従って進めれば、途中でエラーにならない人はすんなり使えるようになります。

遭遇した問題

docker-machine で仮想マシンを作るところでエラーが発生。

$ sudo docker-machine create -d virtualbox default
Running pre-create checks...
Creating machine...
(default) Copying /Users/myname/.docker/machine/cache/boot2docker.iso to /Users/myname/.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) Found a new host-only adapter: "vboxnet0"
Error creating machine: Error in driver during machine creation: Error setting up host only network on machine start: /usr/local/bin/VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.99.1 --netmask 255.255.255.0 failed:
VBoxManage: error: Code E_ACCESSDENIED (0x80070005) - Access denied (extended info not available)
VBoxManage: error: Context: "EnableStaticIPConfig(Bstr(pszIp).raw(), Bstr(pszNetmask).raw())" at line 242 of file VBoxManageHostonly.cpp

$

問題を解消できた方法

ネットを色々検索していると、macos のバージョンが上がってセキュリティ周りの仕様が変わったことによる影響への対処として色々出てきたが、どれを試しても解消できず、途方に暮れていたところ次の記事を発見。

stack overflowの質問docker-machine unable to create a machine on macOS, VBoxManage returning E_ACCESSDENIED error の回答手順がドンピシャでした。

意図としては、ホストオンリーのネットワークアダプタを全部削除して、networks.conf というファイルを然るべきところに作成した後、仮想マシンを作成するというもの。

リンク先消滅の危険回避のため、回答部分を転記しておくとこのような内容。

  1. find all the machines with docker-machine ls
  2. remove the ones you don't need with docker-machine rm -y <machineName>
  3. find all the "host-only ethernet adapters" with VBoxManage list hostonlyifs
  4. Remove the orphaned ones with VBoxManage hostonlyif remove <networkName>
  5. Create a vbox folder in the etc directory with `sudo mkdir
  6. Create a file networks.conf in the vbox folder, for example by sudo touch
  7. place the below line there
    * 0.0.0.0/0 ::/0
  8. create a new machine with docker-machine create -d virtualbox <machineName>
  9. Run the command eval $(docker-machine env <machineName>) to configure your shell

無事仮想マシンを作成できた

上の手順通りに作業したあと、以下のコマンド実行で無事仮想マシンを作成し稼働させることができました!

$ docker-machine create -d virtualbox default
Running pre-create checks...
Creating machine...
(default) Copying /Users/myname/.docker/machine/cache/boot2docker.iso to /Users/myname/.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

終わりに

情報を公開してくださっている先人に感謝いたします!

参照したQiita @kyosuke5_20 さんの記事再掲。

参照した stack overflow のアドレス再掲。
https://stackoverflow.com/a/70294241/17307024

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?