Дозвіл відхилено під час роботи Docker після установки його як Snap


33

Я встановив Docker через магазин програм, який вказував, що це пакет Snap. Я думаю, що мені добре, але, на жаль, кожна команда Docker, яку я спробував, не працює:

$ docker info
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30/info: dial unix /var/run/docker.sock: connect: permission denied

Будь-яка ідея, як це виправити?

Редагувати: Я зараз працював над цим, встановивши Docker із власних сховищ Docker , які могли б працювати і для людей, які переглядають це питання в майбутньому. Я залишаю питання відкритим для тих, хто хоче мати змогу запустити його із Snap.


Встановлено докер з офіційних репостів докера. Докер вже працював, коли я додав свого користувача до dockerгрупи, id -nGне показував докер і будь-яка dockerкоманда призводила до відмови у дозволі. Вихід та повернення в систему не працювали, оскільки процес докерської системи продовжує працювати. Перезавантаження системи або перезапуск докера показали користувача як частину докерної групи та дозволили виконувати докерські команди. ПРИМІТКА: 0 реп., Не можна додати коментар.
Сантош Патель

Відповіді:


33

Це зі сторінки GitHub, чи ви спробували виконати наступні кроки:

If you are using Ubuntu Core 16,

Connect the docker:home plug as it's not auto-connected by default:

$ sudo snap connect docker:home

If you are using an alternative snap-compatible Linux distribution ("classic" in snap lingo), and would like to run docker as a normal user:

Create and join the docker group.

$ sudo addgroup --system docker
$ sudo adduser $USER docker
$ newgrp docker

You will also need to disable and re-enable the docker snap if you added the group while it was running.

$ sudo snap disable docker
$ sudo snap enable docker

З Докера оснащений github


Я не бачив цієї сторінки, тому дякую за посилання. Це означає, що оскільки я не використовую Ubuntu Core, мені доведеться дотримуватися addgroupінструкцій, які, на мою думку, стосуються того, що я зробив, відповідно до інших відповідей. На жаль, я вважаю за краще не торкатися вже працюючої системи, але хотів би почути це, якщо хтось інший спробує це і встигне змусити його працювати.
Вінсент

2
відключення / ввімкнення докерського оснащення зробило для мене хитрість, дякую
Маніш Кумар

1
Це стосується і Ubuntu (Desktop) 19.04.
Нік Брін

31

Повідомлення про помилку повідомляє, що ваш поточний користувач не може отримати доступ до двигуна докера, оскільки у вас немає дозволу на доступ до unix-сокета для спілкування з двигуном.

Тимчасове рішення

Використовуйте sudoкоманду, щоб виконувати команди з підвищеними дозволами щоразу.

Постійне (запропоноване) рішення

Додайте поточного користувача до dockerгрупи. Цього можна досягти, набравши текст

sudo usermod -a -G docker $USER

Щоб набути чинності членства в групі, ви повинні вийти з системи та знову увійти.

Джерело: techoverflow.net


1
Ваш Google-фу краще, ніж мій, мабуть. На жаль, це не працює. Перш за все, dockerгрупи не існувало. Я спершу біг, sudo addgroup dockerа потім перекинув вашу команду, потім вийшов із системи та знову. На жаль, помилка, показана у питанні, зберігається ...
Вінсент

2
@Вінсенте, ти не забув, що зміни в групі відбуваються не відразу, чи не так? Спробуйте newgrp dockerабо вийдіть із системи та увійдіть.
ADDB

Ні, вибачте, забув це згадати - я оновив свій коментар, поки ви відповіли :) Біг groups vincentдає:vincent adm cdrom sudo dip plugdev lpadmin sambashare docker
Вінсент

@Вінсенте лише для довідки, ваш демон-докер запускається, правда? Спробуйте sudo /etc/init.d/docker statusабо sudo service docker statusпротестуйте це.
ADDB

Хм, я не думаю, що вони працюють через те, що це Snap: paste.ubuntu.com/25219172 Ось що, сказав, ps cax | grep dockerdне дає 31034 ? Ssl 0:05 dockerd.
Вінсент

6

Я припускаю, ваше ім’я користувача вже в групі докерів. Щоб перевірити це, видайте команду нижче.

id -nG

Якщо ні, вам не потрібно додавати свого користувача в групу докера за допомогою команди нижче.

sudo groupadd docker
sudo usermod -aG docker $USER

Коли ви виконуєте команду sudo systemctl start docker, вона створює докерний процес. Цей докерський процес містить dockerdдемонову нитку. Команда також створює docker.sockсокет Unix за замовчуванням . 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


Тільки це працює для ubuntu 18.04. Велике спасибі Уддхав Гаутам
Суббір,

3
sudo setfacl -m user:your_user_name:rw /var/run/docker.sock

не вимагає перезавантаження і є більш безпечним


1

Ви повинні додати користувача до групи Docker ( див. Офіційні документи ).

Ви можете додати sudoперед командою або ви можете додати користувача в dockerгрупу за допомогою цієї команди:

sudo usermod -aG docker <USER>

Вийдіть із системи та увійдіть назад, щоб повторно оцінити членство у вашій групі.


Оскільки цей вміст за цим посиланням може зникнути, будь ласка, додайте сюди відповідні дані.
Чай Т. Рекс

Немає потреби, інша відповідь, вже згадувана про додавання користувача до групи - це не допомогло. (Крім того, немає причин, чому це могло б допомогти для встановлення Snap, але не для звичайної установки.)
Vincent
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.