Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 我是否正在尝试连接到没有TLS的启用TLS的守护程序?_Docker - Fatal编程技术网

Docker 我是否正在尝试连接到没有TLS的启用TLS的守护程序?

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

我试图了解,但我一直得到(对我来说)神秘的错误消息

最简单的例子可能是打印我安装的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.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称自己为Linux容器的自给自足运行时。 简单来说,它既是服务器又是客户端
  • $docker version
    命令查询是docker可执行文件的内部查询,而不是运行的守护程序/服务的内部查询
  • $docker images或$docker ps或$docker pull centos
    是向正在运行的docker守护程序/服务发送查询的命令
  • Docker默认支持到其守护程序/服务的TLS连接
  • 只有当您作为用户组
    docker
    的一部分登录的用户,或者您在命令之前使用了
    sudo
    ,例如
    $sudo docker images
    ,才不需要TLS连接
  • 访问Docker文档页面


    稍微滚动到顶部,并找到
    警告部分,以清晰明了。

    我在有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