Como resolver problemas de permissão para o docker no Ubuntu?

29

Eu instalei o docker como descrito aqui . Eu uso Ubuntu Trusty 14.04 (LTS) (64 bits) . Tudo durante a instalação foi bem. Também comando $ sudo docker run -i -t ubuntu /bin/bash completa bem (depois que eu digitei "exit" no console aberto. Mas quando eu tento fazer outra coisa eu recebo "permissão negada". Por exemplo:

'$ sudo docker run -d -P training/webapp python app.py'

Reutiliza em Post http:///var/run/docker.sock/v1.12/containers/create: dial unix /var/run/docker.sock: permission denied

' docker info'

Reutiliza em Get http:///var/run/docker.sock/v1.12/info: dial unix /var/run/docker.sock: permission denied

Como resolver isso? Eu pesquisei sobre o problema, mas não consigo encontrar uma solução para o meu caso.

    
por Cherry 04.11.2014 / 11:05

4 respostas

44

Adicione o grupo de estivadores, se ainda não existir.

$ sudo groupadd docker

Adicione o usuário conectado ${USER} ao grupo de encaixe. Altere o nome de usuário para corresponder ao seu usuário preferido.

$ sudo gpasswd -a ${USER} docker

Reinicie o daemon do Docker:

$ sudo service docker restart # Or docker.io for older versions
# 18.04+ with snap:
$ sudo systemctl restart snap.docker.dockerd

Você deve fazer logout e efetuar login novamente para atualizar as permissões do grupo. Para evitar isso, você pode alternar para um subshell da seguinte maneira. Ou use qualquer um dos outros truques mencionados em esta pergunta :

su - $USER
    
por 17.12.2014 / 12:35
3

Se você estiver executando o CentOS ou o RedHat, talvez seja necessário desativar o SELinux primeiro executando:

setenforce 0

Eiter reiniciar novamente para reativar o SELinux ou executar setenforce 1 .

    
por 14.09.2016 / 08:22
2

Eu tive o mesmo problema, devido ao selinux. Você pode verificar se o selinux é o culpado por:

  1. Desativando o selinux: setenforce 0
  2. Tentando novamente

Se a desativação do selinux resolveu seu problema, não é um motivo para deixá-lo desativado:

  1. Ativar o selinux: setenforce 1
  2. Permitir a conexão do soquete na configuração do selinux: setsebool docker_connect_any true
  3. Execute seu contêiner do Docker com a opção --priviledged
por 16.09.2016 / 00:04
0

Suponho que seu nome de usuário já esteja no grupo de encaixe. Para verificar isso, execute o comando abaixo.

id -nG

Se você não precisar adicionar seu usuário ao grupo de estivadores pelo comando abaixo.

sudo groupadd docker
sudo usermod -aG docker $USER

Quando você executa o comando sudo systemctl start docker , ele cria um processo de encaixe. Esse processo do docker contém o encadeamento do daemon dockerd . O comando também cria o soquete padrão docker.sock Unix. O docker.sock socket é continuamente escutado pelo encadeamento do daemon dockerd . Isso faz com que você possa fazer IPC no nível do kernel com docker.pid process. Para poder usar esse soquete de encaixe, você precisa ter permissão adequada do nível do processo ( docker.pid ) e do nível do arquivo ( docker.sock ). Então, executar abaixo de dois comandos deve resolver seu problema. sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission sudo chmod a+rwx /var/run/docker.pid

    
por 19.07.2018 / 01:40