2

我试图从源代码构建 kubernetes: https ://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/getting-started-guides/binary_release.md#building-from-source

我在我的 ubuntu 上安装了 docker。

royalharsh95@ubuntu:~$ sudo docker version

Client version: 1.0.1

Client API version: 1.12

Go version (client): go1.2.1

Git commit (client): 990021a

Server version: 1.0.1

Server API version: 1.12

Go version (server): go1.2.1

Git commit (server): 990021a

我试过了,sudo service docker start但得到了同样的错误。

royalharsh95@ubuntu:~$ cd kubernetes

royalharsh95@ubuntu:~/kubernetes$ make release

build/release.sh

+++ Verifying Prerequisites....

Can't connect to 'docker' daemon.  please fix and retry.

Possible causes:

- On Mac OS X, boot2docker VM isn't installed or started

- On Mac OS X, docker env variable isn't set appropriately. Run:
      $(boot2docker shellinit)

 - On Linux, user isn't in 'docker' group.  Add and relogin.
    - Something like 'sudo usermod -a -G docker royalharsh95'
    - RHEL7 bug and workaround: https://bugzilla.redhat.com/show_bug.cgi?id=1119282#c8
  - On Linux, Docker daemon hasn't been started or has crashed

make: *** [release] Error 1
4

1 回答 1

4

您遇到的问题是由于您无法以/var/run/docker.sock非 root 用户身份访问 Docker 套接字。当您运行时,您是以root 身份sudo docker version运行 Docker 客户端,因此它不会遇到此问题。

这是一个基本的 Unix 权限问题,有标准的解决方案:

  • 您可以像root使用sudo make release.
  • 您可以修复套接字上的权限,这样您就可以在没有sudo.

如果您查看 Docker 套接字上的权限,您可能会看到如下内容:

$ ls -l /var/run/docker.sock /var/run/docker.sock
srw-rw----. 1 root docker 0 Mar 17 12:26 /var/run/docker.sock

root这显示了组成员可以读取的套接字docker。在这种情况下,我是该docker组的成员,因此我可以在docker没有sudo. 你可以在你的环境中设置同样的东西。

请注意,当然您总是需要以 root 身份启动 Docker 守护程序,但通常您希望将其配置为在系统启动时自动启动,而不是手动启动它。

于 2015-03-18T15:43:58.393 回答