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