Можно ли использовать докер без sudo?

Согласно ответам на этот вопрос о докере , запустить его без полномочий root так же просто, как добавить имя пользователя без полномочий root в группу docker, а также выйти из системы и снова войти в нее. И конечно же, когда я использовал его как sudo для изображения hello-world, которое прошло хорошо. Но для другого тестового изображения под названием whalefortune я все еще получаю ошибку access denied - см. Ниже.

Разве в общем случае больше нельзя запускать docker от имени пользователя root? Я использую Ubuntu 19.04, которая является более поздней версией, чем примеры, и было упоминание о возможном нарушении безопасности при запуске докеров как не-root.

Моя идея состояла в том, чтобы запустить nvidia-docker как обычный пользователь, возможно ли это (или даже хорошая идея)?

$ sudo docker run --rm hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest:   sha256:6540fc08ee6e6b7b63468dc3317e3303aae178cb8a45ed3123180328bcc1d20f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
  1. The Docker client contacted the Docker daemon.
  2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64)
  3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
  4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/

$ docker run --rm dbkdoc/whalefortune
docker: Got permission denied while trying to connect to the 
Docker daemon socket at unix:///var/run/docker.sock: 
Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/create: 
dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
4
задан 15 August 2019 в 13:32

1 ответ

Если Вы не хотите снабжать команду докера предисловием с sudo, создавать группу Unix, названную докером и добавлять пользователей к нему. Когда демон Докера запускает, это создает сокет Unix, доступный членами группы докера.

Предупреждение:

Группа докера предоставляет полномочия, эквивалентные пользователю root. Для получения дополнительной информации о том, как это влияет на безопасность в Вашей системе, посмотрите Поверхность атаки Демона Докера.


Если Вы все еще хотите выполнить докера без sudo:

  • Добавьте группу докера, если она уже не существует:

    sudo groupadd docker
    
  • Добавьте подключенного пользователя "$USER" к группе докера. Измените имя пользователя для соответствия предпочтительному пользователю, если Вы не хотите использовать своего текущего пользователя:

    sudo usermod -aG docker $USER
    
  • Любой делает a newgrp docker или журнал/в для активации изменений в группах (При тестировании на виртуальной машине может быть необходимо перезапустить виртуальную машину для изменений для вступления в силу).

  • Можно использовать

    docker run hello-world
    

    проверять, можно ли выполнить докера без sudo.

PS:
Если Вы первоначально выполнили использование команд CLI Докера sudo прежде, чем добавить Вашего пользователя к docker группа, можно видеть следующую ошибку, которая указывает что Ваш ~/.docker/ каталог был создан с неправильными полномочиями из-за sudo команды.

WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied

Для решения этой проблемы любой удаляет ~/.docker/ каталог (это воссоздается автоматически, но любые пользовательские настройки потеряны), или изменяет свое владение и полномочия с помощью следующих команд:

sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R

Источник: документация Докера

2
ответ дан 1 December 2019 в 10:14

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

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