ある検証で外部からEC2上のdockerを実行する処理を動かしたときに、掲題のエラーが発生しましたので、解消方法を書いておきます。
実施作業
前提条件
- dockerはインストール済み
- dockerと打つとhelpは表示される
- コマンドはec2-userユーザで実行
発生したエラー
実際に発生したエラー内容は以下になります。
読んだらわかりますが、「/var/run/docker.sock」ファイルへのアクセス権限が足りないのでエラーとなっていました。
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
対応方法
対象ファイルの権限を見てみると以下のようになっていました。
詳しく覚えていないですが、恐らくroot権限でinstallしてしまったので、ec2-userではファイルの参照ができなかったものと思います。
$ ls -l /var/run/docker.sock srw-rw----. 1 root docker 0 Oct 26 04:03 /var/run/docker.sock
ec2-userからのアクセス権限がつけばよいので、以下のコマンドでファイルのアクセス権を修正します。
$ sudo chmod 666 /var/run/docker.sock
コンテナを実行していないので何も出てこないですが、エラーが発生しなくなったことが確認できました。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
感想及び所感
初歩的なことですが、検証が必要になるタイミングで良くハマるので、備忘のために書いておくことにします。
この記事がどなたかの参考になれば幸いです。