【问题标题】:docker error: /var/run/docker.sock: no such file or directory码头工人错误:/var/run/docker.sock:没有这样的文件或目录
【发布时间】:2014-10-11 22:13:11
【问题描述】:

我是 docker 新手。我有一个将数据加载到 impala 的 shell 脚本,我想要一个运行构建图像并运行容器的 docker 文件。 我在 mac 上,安装了 boot2docker 并设置了 DOCKER_HOST 环境。

bash-3.2$ docker info
Containers: 0
Images: 0
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Dirs: 0
Execution Driver: native-0.2
Kernel Version: 3.15.3-tinycore64
Debug mode (server): true
Debug mode (client): false
Fds: 10
Goroutines: 10
EventsListeners: 0
Init Path: /usr/local/bin/docker
Sockets: [unix:///var/run/docker.sock tcp://0.0.0.0:2375]

我正在尝试使用以下方法安装预构建的图像:

sudo docker pull busybox

我收到此错误:

sudo docker pull busybox 2014/08/18 17:56:19 Post http:///var/run/docker.sock/images/create?fromImage=busybox&tag=: dial unix /var/run/docker.sock: no such file or directory

我的 docker 设置有问题吗?

当我执行docker pull busybox 时,它会拉取图像并下载完成。

bash-3.2$ docker pull busybox
Pulling repository busybox
a9eb17255234: Download complete 
fd5373b3d938: Download complete 
d200959a3e91: Download complete 
37fca75d01ff: Download complete 
511136ea3c5a: Download complete 
42eed7f1bf2a: Download complete 
c120b7cab0b0: Download complete 
f06b02872d52: Download complete 
120e218dd395: Download complete 
1f5049b3536e: Download complete 
bash-3.2$ docker run busybox /bin/echo Hello Doctor
Hello Doctor

我错过了什么吗?

【问题讨论】:

  • 我遇到了同样的问题。我重新启动了我的笔记本电脑。所以它开始为我工作。 (见docs.docker.com/installation/ubuntulinux)他们也提到要重启电脑。
  • 当我连接到互联网时为我工作,但我不知道为什么会这样:(

标签: docker boot2docker


【解决方案1】:

当您使用boot2docker 时,您不需要以sudo 运行任何docker 命令,因为传入boot2docker VM 的每个命令默认以root 身份运行。

当您以sudo 运行时会看到错误,因为sudo 没有设置DOCKER_HOST 环境,只有您的用户有。

您可以通过以下方式确认:

$ env

然后一个

$ sudo env

并在每个输出中寻找DOCKER_HOST

至于有一个运行脚本的 docker 文件,这样的东西可能对你有用:

Dockerfile

FROM busybox

# Copy your script into the docker image
ADD /path/to/your/script.sh /usr/local/bin/script.sh

# Run your script
CMD /usr/local/bin/script.sh

然后就可以运行了:

docker build -t your-image-name:your-tag .

这将构建您的 docker 映像,您可以通过执行以下操作来查看:

docker images

然后,要运行您的容器,您可以执行以下操作:

docker run your-image-name:your-tag

此运行命令将从您使用 Dockerfile 和构建命令创建的映像启动一个容器,然后在您的 script.sh 完成执行后完成。

【讨论】:

  • 对不起我的无知,但我认为我没有成功构建。 “docker images”:给 2014/08/19 11:11:45 获取 http:///var/run/docker.sock/v1.13/images/json:拨打 unix /var/run/docker.sock:否这样的文件或目录。 docker是否应该放在主目录中,可以用任何名称命名吗?和“image-name”一样吗?
  • 你能粘贴你用来构建 docker 镜像的命令吗?听起来您仍然在不应该使用的 OSX 机器上使用 sudo。
  • $ docker build -t /Users/ig/Documents/tests/hellodocker 。 2014/08/19 11:18:09 无效的命名空间名称 (),只允许 [a-z0-9_],大小在 4 到 30 之间;并且 hellodocker 只是您提供的 dockerfile 的内容。非常感谢。
  • 是的,您正在尝试使用文件路径标记您的 docker 映像 - 在 -t 之后尝试其他内容,例如 your-image-name:a-tag
  • 你能给我命令行吗,请。我在搞砸一些事情。我的 docker 文件是 hellodocker,上面给出了路径。
【解决方案2】:

当我在终端上启动 boot2docker-vm 时在我的 MAC 上使用


boot2docker start

我看到以下内容


To connect the Docker client to the Docker daemon, please set:
    export DOCKER_CERT_PATH=
    export DOCKER_TLS_VERIFY=1
    export DOCKER_HOST=tcp://:2376

设置这些环境变量后,我能够毫无问题地运行构建。

更新 [2016-04-28] 如果您使用的是最新版本的 docker,您可以这样做

eval $(docker-machine env) 将设置环境

docker-machine env 将打印导出语句)

【讨论】:

  • 您也可以将这些添加到您的终端配置文件中以节省时间。 vm 会通知你它们已经设置好了。
【解决方案3】:

您可以使用shellinit 快速设置您的环境

在你的命令提示符下执行:

$(boot2docker shellinit)  

这将填充和导出环境变量并初始化其他功能。

【讨论】:

    【解决方案4】:

    要设置您的环境并为以后的会话保留它,您可以这样做:

    echo 'export DOCKER_HOST="tcp://$(boot2docker ip 2>/dev/null):2375";' >> ~/.bashrc
    

    然后: source ~/.bashrc

    您的环境将在每个会话中设置

    【讨论】:

      【解决方案5】:

      我也遇到了这个错误。不过,我没有使用 boot2docker,只是在 Ubuntu 上安装了 "plain" docker(请参阅 https://docs.docker.com/installation/ubuntulinux/)。

      我收到错误消息(“拨号 unix /var/run/docker.sock:没有这样的文件或目录。您是否尝试连接到没有 TLS 的启用 TLS 的守护程序?”)因为 docker 守护程序是尚未运行

      在 Ubuntu 上,您需要启动服务

      sudo service docker start
      

      另见http://blog.arungupta.me/resolve-dial-unix-docker-sock-error-techtip64

      【讨论】:

        【解决方案6】:

        如果docker service 没有运行,docker pull 将失败。确保它正在运行

        :~$ ps aux | grep docker
        root     18745  1.7  0.9 284104 13976 ?   Ssl  21:19   0:01 /usr/bin/docker -d
        

        如果没有运行,可以通过

        启动

        sudo service docker start

        适用于 Ubuntu 15 及以上版本

        sudo systemctl start docker

        【讨论】:

          【解决方案7】:

          对于windows上的boot2docker,看过之后:

          FATA[0000] Get http:///var/run/docker.sock/v1.18/version: 
          dial unix /var/run/docker.sock: no such file or directory.  
          Are you trying to connect to a TLS-enabled daemon without TLS?
          

          我所做的只是:

          boot2docker start
          boot2docker shellinit
          

          生成的:

          export DOCKER_CERT_PATH=C:\Users\vonc\.boot2docker\certs\boot2docker-vm
          export DOCKER_TLS_VERIFY=1
          export DOCKER_HOST=tcp://192.168.59.103:2376
          

          最后:

          boot2docker ssh
          

          码头工人又开始工作了

          【讨论】:

            【解决方案8】:

            在Linux中,首先在终端中执行sudo service docker start

            【讨论】:

              【解决方案9】:

              如果您使用的是 CentOS 7,并且您已经通过 yum 安装了 Docker,请不要忘记运行:

              $ sudo systemctl start docker
              $ sudo systemctl enable docker
              

              这将启动服务器,并在启动时自动重新启动它。

              【讨论】:

                【解决方案10】:

                第一个 /var/run/docker.sock 指的是 boot2docker 虚拟机中的相同路径。为 windows /var/run/docker.sock 正确编写

                【讨论】:

                • 你能在这里添加更多解释吗?另外,我认为用户在 Mac 上。
                【解决方案11】:

                您,也许不是 OP,但由于您使用 docker(尤其是菜鸟)多次修改和斜线以使事情正确,因此有人可能已经拥有一个名为 /var/run/docker.sock/ 的目录。删除该目录并重试。

                这帮助我让它在 Centos 7 上运行。

                【讨论】:

                  猜你喜欢
                  • 2016-02-18
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2023-02-02
                  • 2021-10-31
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多