Я сталкивался с подобной проблемой, которая является проблемой с разрешениями, и причина этой проблемы в том, что демон / сервер Docker всегда запускается как root
пользователь и хочет, чтобы вы всегда вводили команду docker сsudo
.
Демон Docker связывается с сокетом Unix вместо порта TCP. По умолчанию этот сокет Unix принадлежит пользователю, root
и другие пользователи могут получить к нему доступ только с помощьюsudo
.
Чтобы это исправить, вот что сработало для меня:
Во-первых, проверьте, если у вас уже есть группа докеров:
cat /etc/group
Если вы не найдете docker
в списке, который отображается, вам нужно будет создать его:
sudo groupadd docker
Затем подтвердите свои user
и ваши с group
помощью команды ниже:
cat /etc/group
Прокрутите, чтобы увидеть группу для докера. Это должно быть в этом формате
docker:x:140:promisepreston
где docker
мой group
и promisepreston
мойuser
Теперь мы можем добавить вашего пользователя в группу Docker
Только для файлов контейнера Docker:
Скопируйте и запустите приведенную ниже команду в своем терминале в точности так, как она указана, не изменяя ее в любом случае, независимо от образа / контейнера / команды docker, которую вы хотите выполнить или пытаетесь выполнить, или она вызывает проблему с разрешениями:
sudo usermod -aG docker $USER
После выполнения вышеуказанной команды вам нужно будет выйти из системы и снова войти в нее, чтобы вновь оценить членство в группе. Однако в Linux вы также можете запустить следующую команду ниже, чтобы активировать изменения в группах ( Скопируйте и запустите приведенную ниже команду в своем терминале в точности так, как указано, в любом случае не изменяя ее, независимо от образа / контейнера / команды docker, которая вы хотите запустить, или пытаетесь запустить, или вы видите проблему с разрешением ):
newgrp docker
Теперь вы можете проверить, что вы можете запускать команды docker без разрешений sudo, выполнив команду, которая снова вызывает проблему с разрешениями, скажем ( Замените my-command
на имя вашего образа / контейнера / команды ):
docker run my-command
Для файлов Docker и локальной файловой системы:
Если у вас есть копия файлов в локальной файловой системе, вы можете изменить владельца каталога приложения, в котором хранятся файлы приложения, используя этот формат:
sudo chown <your_user>:<your_group> -R my-app-directory/
Так что в моем случае это будет:
sudo chown promisepreston:docker -R my-app-directory/
Примечание: Запустите эту команду внутри родительского каталога, в котором находится каталог приложения.
Вот и все.
надеюсь, это поможет