Я зіткнувся з подібною проблемою, яка є проблемою дозволу, і причиною цієї проблеми є те, що демон / сервер 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/
Примітка. Будь ласка, запустіть цю команду всередині батьківського каталогу, у якому розміщено каталог додатків.
Це все.
Я сподіваюся, що це допомагає