Docker 我是否正在尝试连接到没有TLS的启用TLS的守护程序?
我试图了解,但我一直得到(对我来说)神秘的错误消息 最简单的例子可能是打印我安装的Docker版本:Docker 我是否正在尝试连接到没有TLS的启用TLS的守护程序?,docker,Docker,我试图了解,但我一直得到(对我来说)神秘的错误消息 最简单的例子可能是打印我安装的Docker版本: $ sudo docker version Client version: 1.4.1 Client API version: 1.16 Go version (client): go1.3.3 Git commit (client): 5bc2ff8 OS/Arch (client): darwin/amd64 FATA[0000] Get http:///var/run/docker.soc
$ sudo docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
FATA[0000] Get http:///var/run/docker.sock/v1.16/version:
dial unix /var/run/docker.sock: no such file or directory.
Are you trying to connect to a TLS-enabled daemon without TLS?
我刚刚经历了这个过程,并严格遵循了每一步,所以我很惊讶我得到了这个信息。。。我现在该怎么办
我刚刚注意到,如果我不使用sudo
我不会得到错误:
$ docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8
当然,这不是一个解决方案,因为我可能需要在以后的某个地方使用sudo
我只是发现说“如果你使用的是OS X,那么你就不应该使用sudo
”我不知道他们的意思是仅仅针对那个例子,还是一般意义上的。对我来说,运行$(boot2docker shellinit 2>/dev/null)
修复了这个问题
这将在当前终端会话中运行boot2docker shellinit
命令的输出(三行set-x…
行),这使docker
命令知道在哪里可以找到boot2docker虚拟机
将$(boot2docker shellinit 2>/dev/null)
添加到~/.bash_profile
文件的底部将确保每次打开终端时都配置了docker
命令
对于使用Fish shell的用户:
boot2docker shellinit^/dev/null | source
请注意,
2>/dev/null
(和Fish等价物^/dev/null
)是可选的。就像@pablo fernandez建议的那样,这隐藏了编写..
行
$docker version
命令查询是docker可执行文件的内部查询,而不是运行的守护程序/服务的内部查询$docker images或$docker ps或$docker pull centos
是向正在运行的docker守护程序/服务发送查询的命令docker
的一部分登录的用户,或者您在命令之前使用了sudo
,例如$sudo docker images
,才不需要TLS连接稍微滚动到顶部,并找到
警告部分,以清晰明了。我在有sudo和没有sudo的MacOS上都遇到了相同的错误
我用以下方法解决了这个问题:
boot2docker start
$(boot2docker shellinit)
附言:谢谢艾伦。我发现这种方法在中是推荐的
p.S.2:有时在运行两个命令之前可能需要boot2docker init
。您需要执行以下操作:
$boot2docker init
$boot2docker start
以下设置修复了该问题:
$export DOCKER_HOST=tcp://192.168.59.103:2376
$export DOCKER_CERT_PATH=/Users/{profileName}/.boot2docker/certs/boot2docker-vm
$export DOCKER_TLS_VERIFY=1
您可能还没有该文件的权限。
这件事发生在我使用
sudo gpasswd -a user docker
但尚未注销
要解决此问题,您可以重新登录或使用
sg docker“docker…”
注销前
如果您在/etc/group
中的组docker
,您应该能够在不键入密码的情况下运行它
无论如何,我尝试了这个问题中的所有解决方案,但在卸载并重新安装之前,没有一个解决了我的问题。这个过程将VirtualBox从版本4.2.16升级到了版本4.3.22(我以前的版本已经在系统上闲置了几个月)
然后boot2docker
和docker
在没有任何其他调整的情况下工作。我在这里尝试了解决方案,boot2docker没有工作
我的解决方案:在Mac上卸载boot2docker,在VirtualBox中安装Centos7虚拟机,并在该虚拟机内使用Docker。确保有
127.0.0.1 localhost
在你的
`/etc/hosts `
文件。在Ubuntu上安装lxc docker后,您需要将您的用户添加到docker用户组:
sudo usermod -a -G docker myusername
这是因为套接字文件权限:
srw-rw---- 1 root docker 0 Mar 20 07:43 /var/run/docker.sock
不要像其他评论中建议的那样,在没有“-a”的情况下运行usermod,否则它将删除您的附加组设置,只会离开“docker”组
这就是将要发生的事情:
➜ ~ id pawel
uid=1000(pawel) gid=1000(pawel) groups=1000(pawel),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare),998(docker)
➜ ~ usermod -G docker pawel
➜ ~ id pawel
uid=1000(pawel) gid=1000(pawel) groups=1000(pawel),998(docker)
TLDR:这让我的Python meetup小组克服了这个问题,当时我正在运行一个安装docker的诊所,而大多数用户都在OS X上:
boot2docker init
boot2docker up
运行输出给您的export
命令,然后
docker info
我应该告诉你它是有效的
背景(是什么让我们想到这个问题的)
我领导了一个安装docker的诊所,大多数与会者都有OSX,我们遇到了这个问题,我在几台机器上克服了这个问题。以下是我们遵循的步骤:
首先,我们安装了自制软件(是的,一些与会者没有):
然后我们得到了cask,我们用它安装virtualbox,然后用brew安装docker和boot2docker(操作系统X都需要):
解决方案
就在那时,我们遇到了询问者遇到的问题。下面的代码修复了它。我知道init
是一次性交易,但每次启动docker时,您可能都必须运行up
:
boot2docker init
boot2docker up
然后,当运行up
时,它会给出几个export
命令。复制粘贴并运行它们
最后,docker info
应该告诉您它安装正确
演示
其余的命令应该演示它。(在Ubuntu linux上,我需要sudo。)
然后,您应该位于容器中的根shell上:
apt-get install nano
exit
返回本机用户bash:
docker ps -l
在“容器ID”下查找大约12位十六进制(0-9或a-f)标识符,例如456789abcdef
。然后,您可以提交更改并将其命名为描述性名称,如descriptivename
:
docker commit 456789abcdef descriptivename`
下划线问题很简单-没有/
apt-get install nano
exit
docker ps -l
docker commit 456789abcdef descriptivename`
$ sudo apt-get install apparmor lxc cgroup-lite
$ sudo usermod -aG docker ${USER}
$ sudo docker -d
sudo apt-get install apparmor lxc cgroup-lite
sudo apt-get install docker.io
# If you installed docker.io first, you'll have to start it manually
sudo docker -d
sudo docker run -i -t ubuntu /bin/bash
sudo apt-get -y install lxc
sudo gpasswd -a ${USER} docker
newgrp docker
sudo service docker restart
sudo apt-get -y install apparmor cgroup-lite
sudo service docker restart
service docker start
http:///var/run/docker.sock/v1.19/build?cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&memory=0&memswap=0&rm=1&t=59aec062a8dd8b579ee1b61b299e1d9d340a1340: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
FATAL: Failed to build docker image from project Dockerfile
java.lang.RuntimeException: Failed to build docker image from project Dockerfile
Solution:
[root@Jenkins ssh]# groupadd docker
[root@Jenkins ssh]# gpasswd -a jenkins docker
Adding user jenkins to group docker
[root@Jenkins ssh]# /etc/init.d/docker restart
Stopping docker: [ OK ]
Starting docker: [ OK ]
[root@Jenkins ssh]# /etc/init.d/jenkins restart
Shutting down Jenkins [ OK ]
Starting Jenkins [ OK ]
[root@Jenkins ssh]#
sudo groupadd docker
sudo usermod -aG docker $USER
docker run hello-world