DockerでCouldn't connect to Docker daemonが出る場合の原因と解決方法

はじめに
Dockerをいざ使おうとした時に、Dockerのコマンド実行時にERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?というエラーが表示されました。この記事ではこのエラーの原因と解決方法をまとめます。
エラーの内容
DockerとDocker Composeをインストールし、いざDockerとDocker Composeを使おうとコマンドを実行したところ、以下のようなエラーが表示されました。
上記はRails環境を構築しようとした際に使ったDocker Compoesのコマンドですが、他のDockerコマンドやdocker-composeに続く内容に関わらず表示されるエラーです。
Couldn't connect to Docker daemonの原因
これは、「Dockerデーモンに接続できなかった」という内容で、Dockerの使用権限がデフォルトではrootのみに与えられており、root権限を持たない通常ユーザでDockerのコマンドを実行したことが原因です。なぜデフォルトではrootにのみ使用権限が与えられているかというと、DockerではUnixソケットを使用しますが、このUnixソケットの使用権限がrootにしか付与されていません。
そのため、Docker、Docker Composeは実行時にroot権限が必要となります。
したがって、解決方法は以下の2つが考えられます。
sudoを使うdockerグループを作成して、そこに通常ユーザを加える
上記2つについてそれぞれ説明します。
sudoを使う
これは簡単で、具体的には以下のようにsudoを付けて実行すれば解決です。
毎回sudoを使うのが面倒な場合は、2番目の解決策が参考になると思います。
dockerグループを作成して、そこに通常ユーザを加える
dockerという名前のグループを作成し、そこに通常ユーザを追加します。
dockerグループを確認、作成する
環境によってはすでにdockerグループが作成されている場合もありますので、以下のコマンドで一度グループ一覧を確認してみます。
私の環境では、DockerとDocker Compoesをインストールした時点で上記のようにすでにdockerグループが作成されていました。
もし、上記コマンド結果に何も出力されない場合は、以下でdockerグループを作成します。
通常ユーザをdockerグループに追加する
続いて以下のコマンドで通常ユーザをdockerグループに追加します。
上記の$USERは、環境変数で現在ログイン中の通常ユーザのユーザ名です。
上記を実行後、以下で通常ユーザが属するグループを確認してみると、dockerグループが所属するグループとして含まれていることを確認できます。tarouというのが通常ユーザです。
グループの追加を反映させるには、ログインし直す必要があるので、一度ログアウトして再ログインしてください。
後は以下のようにsudoなしでもDocker、Docker Composeを使用できるようになります。
WARNINGが出る場合
もし上記のdockerグループに追加する対策をする前に、sudoを実行してDockerコマンドを実行した場合は、ホームディレクトリ直下に.dockerというディレクトリが作成されています。このディレクトリが残った状態で上記のdockerグループに追加する対策をした後に、sudoなしでDockerのコマンドを実行すると以下のような警告が出る場合があります。
これは、作成された.dockerディレクトリのパーミッションがroot権限になってしまっているために出る警告です。これを解決するには、一度.dockerディレクトリを削除します。.dockerは、削除してもDockerコマンド実行時に自動で再作成されます。
もしくは、以下のようにroot権限から通常ユーザに権限を付与してももちろん大丈夫です。
参考文献
以下の公式ドキュメントにしっかりと書いてありました。
This section contains optional procedures for configuring Linux hosts to work better with Docker. Manage Docker as a non-root user The Docker daemon binds to a Unix socket instead of...
まとめ
Dockerを使い始めた時に遭遇しやすいエラーだと思います。同じようなエラーに遭遇している方の参考になれば幸いです。
関連記事
公開日:2020/01/01 更新日:2020/01/01Docker ComposeをUbuntuにインストールする手順
Docker ComposeをUbuntu18.04にインストールしたのでその手順をメモしておきます。docker-composeコマンドを使えるようにするまでの手順です。Docker Composeのインストール自体はとても簡単です。
公開日:2018/08/20 更新日:2018/08/20NextcloudをDockerで構築する手順
プライベートなDropbox環境を構築することができるOwnCloudですが、OwnCloudから派生したNextcloudが開発されています。 このNextcloudを実際に触って使ってみるために、Dockerを使って環境構築したのでその手順をメモします。
公開日:2018/08/14 更新日:2018/08/14Dockerのコンテナとホストで共有フォルダを設定する手順
公開日:2018/06/09 更新日:2018/06/09Ubuntu18.04にDockerをインストールする手順
はじめはわかりにくいDockerですが、とりあえず手を動かして実際に使ってみると、その良さが次第にわかります。私自身、最初は良くわからないまま使い始めましたが、その便利さを使っているうちに実感できました。そこでここではUbuntu18.04にDockerをインストールする手順をメモします。