从源代码构建 kubernetes 时无法连接到 'docker' 守护进程
Can't connect to 'docker' daemon on building kubernetes from source
我试图从源代码构建 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
您遇到的问题是由于您无法以非 root 用户身份访问 Docker 套接字 /var/run/docker.sock
而引起的。当您 运行 sudo docker version
时,您 运行 将 Docker 客户端 设置为 root,因此它不会遇到此问题。
这是一个基本的 Unix 权限问题,有标准的解决方案:
- 您可以 运行 Kubernetes 构建为
root
和 sudo make release
。
- 您可以修复套接字的权限,这样您就可以在没有
sudo
的情况下使用 Docker。
如果您查看 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 守护程序,但通常您希望将其配置为在系统启动时自动启动,而不是手动启动。
我试图从源代码构建 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
您遇到的问题是由于您无法以非 root 用户身份访问 Docker 套接字 /var/run/docker.sock
而引起的。当您 运行 sudo docker version
时,您 运行 将 Docker 客户端 设置为 root,因此它不会遇到此问题。
这是一个基本的 Unix 权限问题,有标准的解决方案:
- 您可以 运行 Kubernetes 构建为
root
和sudo make release
。 - 您可以修复套接字的权限,这样您就可以在没有
sudo
的情况下使用 Docker。
如果您查看 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 守护程序,但通常您希望将其配置为在系统启动时自动启动,而不是手动启动。