docker错误:/var/run/docker.sock:没有这样的文件或目录

use*_*851 85 docker boot2docker

我是码头工人的新手.我有一个shell脚本将数据加载到impala中,我想要一个运行的docker文件构建一个映像并运行容器.我在mac上,安装了boot2docker并DOCKER_HOST设置了env.

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]
Run Code Online (Sandbox Code Playgroud)

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

sudo docker pull busybox
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

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 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
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

Chr*_*nel 87

您不需要像sudo使用时boot2docker那样运行任何docker命令,因为boot2docker默认情况下,传递到VM的每个命令都以root身份运行.

当你运行时,你会看到错误,sudo因为sudo没有DOCKER_HOST设置env,只有你的用户才有.

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

$ env
Run Code Online (Sandbox Code Playgroud)

然后一个

$ sudo env
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

然后你可以运行:

docker build -t your-image-name:your-tag .
Run Code Online (Sandbox Code Playgroud)

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

docker images
Run Code Online (Sandbox Code Playgroud)

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

docker run your-image-name:your-tag
Run Code Online (Sandbox Code Playgroud)

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


use*_*337 45

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

在命令提示符下执行:

$(boot2docker shellinit)  
Run Code Online (Sandbox Code Playgroud)

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


Jer*_*ony 25

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


boot2docker start
Run Code Online (Sandbox Code Playgroud)

我看到以下内容


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
Run Code Online (Sandbox Code Playgroud)

设置这些环境变量后,我能够运行构建没有问题.

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

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

(docker-machine env将打印出口报表)

  • 您还可以将这些添加到终端配置文件中以节省时间.vm将通知您它们已经设置好了. (2认同)

Har*_*nan 24

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

:~$ ps aux | grep docker
root     18745  1.7  0.9 284104 13976 ?   Ssl  21:19   0:01 /usr/bin/docker -d
Run Code Online (Sandbox Code Playgroud)

如果它没有运行,你可以启动它

sudo service docker start

适用于Ubuntu 15及以上版本

sudo systemctl start docker


Jör*_*örg 16

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

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

在Ubuntu上,您需要启动该服务:

sudo service docker start
Run Code Online (Sandbox Code Playgroud)

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


Von*_*onC 9

对于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?
Run Code Online (Sandbox Code Playgroud)

我所做的只是:

boot2docker start
boot2docker shellinit
Run Code Online (Sandbox Code Playgroud)

那产生了:

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
Run Code Online (Sandbox Code Playgroud)

最后:

boot2docker ssh
Run Code Online (Sandbox Code Playgroud)

码头工人再次工作


Moh*_*shi 6

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


Lee*_*son 5

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

$ sudo systemctl start docker
$ sudo systemctl enable docker
Run Code Online (Sandbox Code Playgroud)

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