31

Я установил докер, как описано здесь. Я использую Ubuntu Trusty 14.04 (LTS) (64-разрядная версия). Все во время установки было хорошо. Также команда $ sudo docker run -i -t ubuntu /bin/bash завершается хорошо (после того, как я набрал "выход" в открытой консоли. Но когда я пытаюсь сделать что-то еще, я получаю "разрешение отказано". Например:

`$ 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

Как это решить? Я погуглил о проблеме, но не могу найти решение для своего случая.

4 ответа4

46

Добавьте группу докеров, если она еще не существует.

$ 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
3

Если вы используете CentOS или RedHat, вам, возможно, придется сначала отключить SELinux, запустив:

setenforce 0

Затем перезапустите Eiter, чтобы снова включить SELinux или запустить setenforce 1 .

2

У меня была такая же проблема, из-за selinux. Вы можете проверить, является ли selinux виновником:

  1. Отключение selinux: setenforce 0
  2. Повторная

Если отключение selinux решило вашу проблему, не стоит оставлять его отключенным:

  1. Включить selinux: setenforce 1
  2. Разрешите подключение к сокету в конфигурации selinux: setsebool docker_connect_any true
  3. Запустите ваш контейнер Docker с опцией --priviledged
1

Я предполагаю, что ваше имя пользователя уже находится в группе Docker. Чтобы проверить это, введите команду ниже.

id -nG

Если нет, вам нужно добавить пользователя в группу Docker с помощью команды ниже.

sudo groupadd docker
sudo usermod -aG docker $USER

Когда вы выполните команду sudo systemctl start docker , она создаст процесс docker. Этот процесс docker содержит поток демона dockerd . Команда также создает сокет Unix по умолчанию для docker.sock . Сокет docker.sock постоянно прослушивается потоком демона dockerd . Это позволяет вам выполнять IPC на уровне ядра с помощью процесса docker.pid . Чтобы иметь возможность использовать этот докер-сокет, вам необходимо иметь соответствующие разрешения на уровне процессов (docker.pid) и уровне файлов (docker.sock). Таким образом, выполнение ниже двух команд должно решить вашу проблему. sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission sudo chmod a+rwx /var/run/docker.pid

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .