Не удается подключиться к демону Docker в Ubuntu 17.10 [duplicate]

Это настройка рабочего стола в Ubuntu. Перейдите в settings/appearance/behavior и проверьте параметры отображения меню в строке заголовка окна и всегда показывайте меню. Это исправлено для меня - все мои приложения - QtCreator включены - теперь ведут себя правильно.

666
задан 6 June 2014 в 13:17

6 ответов

В руководстве docker говорится об этом:

Предоставление доступа без полномочий. Демон docker всегда работает как пользователь root, а с версии Docker 0.5.2 демон docker привязывается к Unix вместо TCP-порта. По умолчанию этот сокет Unix принадлежит пользователю root, и поэтому по умолчанию вы можете получить доступ к нему с помощью sudo. Начиная с версии 0.5.3, если вы (или ваш установщик Docker) создаете группу Unix, называемую докере, и добавьте к ней пользователей, тогда демон docker сделает доступ к сокету Unix для чтения / записи группой докеров при запуске демона , Демон-докер должен всегда запускаться как пользователь root, но если вы запустите клиент докеров в качестве пользователя в группе докеров, вам не нужно добавлять sudo ко всем клиентским командам. Начиная с версии 0.9.0, вы можете указать, что группа, отличная от докера, должна иметь сокет Unix с опцией -G. Предупреждение: группа докеров (или группа, указанная с -G) эквивалентна корневой системе; см. Docker Daemon Attack Surface details и этот blogpost о том, почему мы не разрешаем пользователям без полномочий root запускать Docker в CentOS, Fedora или RHEL (спасибо michael-n).

Важно прочитать: docker manual (он также ссылается на детали поверхности атаки Docker Daemon).

Предоставление non-root access

Демон docker привязывается к сокету Unix вместо TCP-порта. По умолчанию этот сокет Unix принадлежит пользователю root, а другие пользователи могут обращаться к нему только с помощью sudo. Демон-докер всегда работает как пользователь root.

Демон docker всегда работает как пользователь root, а с версии Docker 0.5.2 демон docker привязывается к сокету Unix вместо TCP-порта. По умолчанию этот сокет Unix принадлежит пользователю root, и поэтому по умолчанию вы можете получить к нему доступ с помощью sudo.

Добавить группу докеров, если она не работает 't уже существует: sudo groupadd docker Добавьте подключенного пользователя «$ USER» в группу докеров. Измените имя пользователя в соответствии с вашим предпочтительным пользователем, если вы не хотите использовать своего текущего пользователя: sudo gpasswd -a $USER docker Либо выполните newgrp docker, либо войдите в систему, чтобы активировать изменения в группах. Вы можете использовать docker run hello-world , чтобы проверить, можно ли запустить докер без sudo.
929
ответ дан 18 July 2018 в 00:55

В руководстве docker говорится об этом:

Предоставление доступа без полномочий. Демон docker всегда работает как пользователь root, а с версии Docker 0.5.2 демон docker привязывается к Unix вместо TCP-порта. По умолчанию этот сокет Unix принадлежит пользователю root, и поэтому по умолчанию вы можете получить доступ к нему с помощью sudo. Начиная с версии 0.5.3, если вы (или ваш установщик Docker) создаете группу Unix, называемую докере, и добавьте к ней пользователей, тогда демон docker сделает доступ к сокету Unix для чтения / записи группой докеров при запуске демона , Демон-докер должен всегда запускаться как пользователь root, но если вы запустите клиент докеров в качестве пользователя в группе докеров, вам не нужно добавлять sudo ко всем клиентским командам. Начиная с версии 0.9.0, вы можете указать, что группа, отличная от докера, должна иметь сокет Unix с опцией -G. Предупреждение: группа докеров (или группа, указанная с -G) эквивалентна корневой системе; см. Docker Daemon Attack Surface details и этот blogpost о том, почему мы не разрешаем пользователям без полномочий root запускать Docker в CentOS, Fedora или RHEL (спасибо michael-n).

Важно прочитать: docker manual (он также ссылается на детали поверхности атаки Docker Daemon).

Предоставление non-root access

Демон docker привязывается к сокету Unix вместо TCP-порта. По умолчанию этот сокет Unix принадлежит пользователю root, а другие пользователи могут обращаться к нему только с помощью sudo. Демон-докер всегда работает как пользователь root.

Демон docker всегда работает как пользователь root, а с версии Docker 0.5.2 демон docker привязывается к сокету Unix вместо TCP-порта. По умолчанию этот сокет Unix принадлежит пользователю root, и поэтому по умолчанию вы можете получить к нему доступ с помощью sudo.

Добавить группу докеров, если она не работает 't уже существует: sudo groupadd docker Добавьте подключенного пользователя «$ USER» в группу докеров. Измените имя пользователя в соответствии с вашим предпочтительным пользователем, если вы не хотите использовать своего текущего пользователя: sudo gpasswd -a $USER docker Либо выполните newgrp docker, либо войдите в систему, чтобы активировать изменения в группах. Вы можете использовать docker run hello-world , чтобы проверить, можно ли запустить докер без sudo.
933
ответ дан 24 July 2018 в 17:18

Механизм, по которому добавление пользователя в группу docker дает разрешение на запуск докера, - это получить доступ к сокету докера в /var/run/docker.sock. Если файловая система, содержащая /var/run, смонтирована с включенными ACL, это также может быть достигнуто с помощью списков ACL.

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

Я включаю это только для полноты.

In В общем, я рекомендую избегать ACL, когда доступна хорошая альтернатива на основе групп. Лучше, если привилегии в системе могут быть поняты, если посмотреть только на членство в группах. Необходимость сканирования файловой системы для записей ACL для понимания системных привилегий является дополнительной нагрузкой для проверок безопасности.

22
ответ дан 18 July 2018 в 00:55

Чтобы выполнить команду docker без sudo, вам нужно добавить своего пользователя (который имеет права root) в группу докеров. Для этого запуска выполните следующую команду:

sudo usermod -aG docker $USER

Теперь выйдите из системы, затем войдите в систему снова. Это решение хорошо объяснено здесь с надлежащим процессом установки.

148
ответ дан 18 July 2018 в 00:55

Механизм, по которому добавление пользователя в группу docker дает разрешение на запуск докера, - это получить доступ к сокету докера в /var/run/docker.sock. Если файловая система, содержащая /var/run, смонтирована с включенными ACL, это также может быть достигнуто с помощью списков ACL.

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

Я включаю это только для полноты.

In В общем, я рекомендую избегать ACL, когда доступна хорошая альтернатива на основе групп. Лучше, если привилегии в системе могут быть поняты, если посмотреть только на членство в группах. Необходимость сканирования файловой системы для записей ACL для понимания системных привилегий является дополнительной нагрузкой для проверок безопасности.

22
ответ дан 24 July 2018 в 17:18
  • 1
    Он работал 16.04 – edib 12 December 2017 в 12:22
  • 2
    Это то, что мне нужно, другие ответы, требует от пользователя получения прав root. Спасибо, много! – Mrinal Saurabh 13 February 2018 в 09:24
  • 3
    Гораздо лучший способ imo. Групповой докер является корневым эквивалентом, и это всегда является признаком опасности. И я не вижу недостатка в том, чтобы взять на себя ответственность за этот файл. – Xerus 3 March 2018 в 04:54
  • 4
    Не могли бы вы описать, какие команды должны выполняться, чтобы « получили доступ к сокету докера в /var/run/docker.sock »? – yuval 12 April 2018 в 19:46
  • 5
    @Xerus, если я правильно понимаю, , тот, кто может писать в этот сокет, может также получать привилегии с корневым эквивалентом . Поэтому предоставление кому-либо доступа к этому сокету через ACL имеет тот же эффект безопасности, что и добавление этого человека в группу докеров. – Paŭlo Ebermann 23 April 2018 в 18:26

Чтобы выполнить команду docker без sudo, вам нужно добавить своего пользователя (который имеет права root) в группу докеров. Для этого запуска выполните следующую команду:

sudo usermod -aG docker $USER

Теперь выйдите из системы, затем войдите в систему снова. Это решение хорошо объяснено здесь с надлежащим процессом установки.

149
ответ дан 24 July 2018 в 17:18
  • 1
    после добавления пользователя в группу выполните следующую команду: sg имя_группы -c & quot; bash & quot; – madjardi 9 April 2016 в 05:12
  • 2
    не нужно перезагружать ОС. Просто выйдите из системы и войдите снова. – binW 17 May 2016 в 12:50
  • 3
    вам не нужно перезагружать ОС для этого изменения! Это будет бомбить все запущенные контейнеры! Просто попросите пользователя, чтобы вы только что вышли из системы. – Tommy 12 September 2016 в 18:22
  • 4
    Как эта команда отличается от «sudo gpasswd -a $ {USER} docker & quot; в другом ответе? Если вообще... – Ashley Aitken 9 March 2017 в 19:22
  • 5
    Не могли бы вы добавить предупреждение, данное документами: & quot; Группа докеров [...] имеет корневой эквивалент », поэтому люди могут подумать об этом – Murmel 25 April 2017 в 00:28

Другие вопросы по тегам:

Похожие вопросы: