AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1165877
Accepted
alle_meije
alle_meije
Asked: 2019-08-16 01:57:01 +0800 CST2019-08-16 01:57:01 +0800 CST 2019-08-16 01:57:01 +0800 CST

是否可以在没有 sudo 的情况下使用 docker?

  • 772

根据这个关于 docker的问题的答案,以非 root 身份运行它就像将非 root 用户名添加到docker组中一样简单,然后注销并重新登录。果然,当我将它sudo用于hello-world图像时进展顺利。但是对于另一个名为的测试图像,whalefortune我仍然得到access denied错误——见下文。

通常不再可能以非 root 身份运行 docker 吗?我使用的是 Ubuntu 19.04,它是比示例更新的版本,并且有人提到以非 root 身份运行 docker 可能存在安全漏洞。

我的想法是以普通用户身份运行 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'.
permissions sudo groups docker
  • 1 1 个回答
  • 20074 Views

1 个回答

  • Voted
  1. Best Answer
    singrium
    2019-08-16T02:23:24+08:002019-08-16T02:23:24+08:00

    如果您不想在 docker 命令前加上 sudo,请创建一个名为 docker 的 Unix 组并将用户添加到其中。当 Docker 守护进程启动时,它会创建一个可供 docker 组成员访问的 Unix 套接字。

    警告:

    docker 组授予与 root 用户等效的权限。有关这如何影响系统安全性的详细信息,请参阅Docker Daemon Attack Surface。


    如果您仍然想在没有 docker 的情况下运行sudo:

    • 如果 docker 组不存在,请添加它:

       sudo groupadd docker
      
    • 将连接的用户“$USER”添加到 docker 组。如果您不想使用当前用户,请更改用户名以匹配您的首选用户:

       sudo usermod -aG docker $USER
      
    • 执行 anewgrp docker或注销/登录以激活对组的更改(如果在虚拟机上进行测试,可能需要重新启动虚拟机才能使更改生效)。

    • 您可以使用

       docker run hello-world
      

      检查是否可以在没有 sudo 的情况下运行 docker。

    PS:
    如果您sudo在将用户添加到docker组之前最初使用 Docker CLI 命令运行,您可能会看到以下错误,这表明您的~/.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
    

    完成后,您需要重新启动会话/重新登录sudo su $USER才能使用没有sudo.

    资料来源: Docker 文档

    • 8

相关问题

  • WINE 用户配置

  • 无法更新雷鸟

  • 为什么我需要 root 权限才能在命令行中卸载驱动器,而不是在 Nautilus 中?如何改变它?

  • Ubuntu 在什么许可证下?可以合法修改和分发吗?

  • 文件权限如何工作?文件权限用户和组

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve