docker

docker-machine activeでNo active host foundとなった時の対処法(sudo使用時)

DockerMachineで、あるマシンをActiveにするには以下のコマンドで実行できます。

$ eval $(docker-machine env example)

自分の場合、今までdocker関連のコマンドはすべてsudoでroot権限に昇格して実行させていましたので

$ eval $(sudo docker-machine env example)

としました(そうしないとpermission deniedになってしまう)。

しかしこれが誤りの原因で、Activeなマシンを確認しようとしても「見つからない」として弾かれてしまいます。

$ sudo docker-machine active
No active host found

対処方法としてはズバリsudoをつけなくてもdockerやdocker-machineを実行出来るようにすることです。

sudoなしでdockerを動かす

さっそくsudo無しでdockerを動かすように設定していきます。

まずは現在のユーザーをdockerグループに所属させます(Ubuntu16.04の場合)。

sudo gpasswd -a ${USER} docker

グループへの追加の反映とdockerの再起動のため一旦マシンを再起動した方が良いです。

マシン情報はホームディレクトリの.dockerフォルダに格納されますので、こちらの所有グループとパーミッションも変更しておきましょう。

$ sudo chown -R root:docker ~/.docker
$ sudo chmod -R 775 ~/.docker

再びactiveなマシンを表示させてみましょう。

$ docker-machine ls
NAME       ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
machine1   *        virtualbox   Running   tcp://192.168.99.100:2376           v1.13.1   
machine2   -        virtualbox   Running   tcp://192.168.99.101:2376           v1.13.1   

ACTIVEのカラムにアスタリスクマークがついたので成功です。