こちら のようにdockerをインストールしました 。私は Ubuntu Trusty 14.04(LTS)(64-bit) を使います。インストール中のすべてが順調でした。また、コマンド$ Sudo docker run -i -t ubuntu /bin/bash
は(開いたコンソールで「exit」と入力した後で)正常に完了しました。しかし、他のことをしようとすると、「権限が拒否されました」と表示されます。
`$ Sudo docker run -d -P training/webapp python app.py`
Post http:///var/run/docker.sock/v1.12/containers/create: dial unix /var/run/docker.sock: permission denied
での再利用
` docker info`
Get http:///var/run/docker.sock/v1.12/info: dial unix /var/run/docker.sock: permission denied
での再利用
これを解決するには?私はその問題についてグーグルしましたが、私の場合の解決策を見つけることができません。
Dockerグループが存在しない場合は追加します。
$ Sudo groupadd docker
接続ユーザー${USER}
をdockerグループに追加します。好みのユーザーに合わせてユーザー名を変更してください。
$ Sudo gpasswd -a ${USER} docker
Dockerデーモンを再起動します。
$ Sudo service docker restart # Or docker.io for older versions
# 18.04+ with snap:
$ Sudo systemctl restart snap.docker.dockerd
ログアウトしてから再度ログインして、グループの権限を更新してください。それを避けるために、次のようにサブシェルに切り替えることができます。あるいは、この質問に 記載されている他のトリックを使う
su - $USER
CentOSまたはRedHatを実行している場合は、最初にSELinuxを無効にする必要があります。
setenforce 0
その後SELinuxを再度有効にするかsetenforce 1
を実行するために起動します。
私は、selinuxのせいで同じ問題を抱えていました。 selinuxが原因であるかどうかを確認できます。
setenforce 0
Selinuxを無効にしても問題が解決しない場合は、無効にしておく必要はありません。
setenforce 1
setsebool docker_connect_any true
--priviledged
オプションを付けてDockerコンテナーを実行するあなたのユーザ名はすでにdockerグループに入っていると思います。これをチェックするには、下記のコマンドを発行してください。
id -nG
そうでない場合は、下記のコマンドでユーザーをdockerグループに追加する必要があります。
Sudo groupadd docker
Sudo usermod -aG docker $USER
コマンドSudo systemctl start docker
を実行すると、dockerプロセスが作成されます。そのdockerプロセスにはdockerd
デーモンスレッドが含まれています。このコマンドは、デフォルトのdocker.sock
Unixソケットも作成します。 docker.sock
ソケットは、dockerd
デーモンスレッドによって継続的に待機されています。これにより、カーネルレベルのIPCをdocker.pid
プロセスで実行できます。このdocker socketを使用するには、プロセスレベル(docker.pid
)とファイルレベル(docker.sock
)から適切な許可を得る必要があります。したがって、2つのコマンドの下で実行すると問題は解決します。 Sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission Sudo chmod a+rwx /var/run/docker.pid
現在のバージョン までには、グループdocker
を追加する必要はありません。
インストールによって自動的に存在します。次のコマンドで確認できます。
$ Sudo groupadd docker
groupadd: group 'docker' already exists
そのため、Dockerを非rootユーザーとして管理するには、ユーザーをdockerに追加するだけですその後、グループからログアウトして再度ログインし、グループのメンバーシップが再評価されるようにします。
$ Sudo usermod -aG docker $USER
$ logout
ログイン時に確認するには
$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
新しいプライマリグループとしてGROUP:docker
を使うことを強制することさえできます。
$ Sudo chown "$USER":"docker" /home/"$USER"/.docker -R
$ Sudo chmod g+rwx "$HOME/.docker" -R
$ Sudo usermod -g docker ${USER}
$ logout
ログイン時に確認するには
$ id
uid=1001(<user_name>) gid=999(docker) groups=999(docker),...