カピバラ好きなエンジニアブログ

興味ある技術とか検証した内容を赴くままに書いていきます。カピバラの可愛さこそ至高。

EC2上でdocker psを実行したときに発生したエラーの対応法

ある検証で外部から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


感想及び所感

初歩的なことですが、検証が必要になるタイミングで良くハマるので、備忘のために書いておくことにします。

この記事がどなたかの参考になれば幸いです。