docker错误:/var/run/docker.sock:没有这样的文件或目录
我是docker工人。 我有一个shell脚本,将数据加载到impala,我想运行一个docker文件构build一个图像并运行容器。 我在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]
我正在尝试使用以下方法安装预build的图像:
sudo docker pull busybox
我得到这个错误:
sudo docker pull busybox 2014/08/18 17:56:19 Post http:///var/run/docker.sockhttp://img.dovov.comcreate?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
我错过了什么吗?
当您使用boot2docker
时,不需要像sudo
那样运行任何boot2docker
命令,因为每个传递到boot2docker
虚拟机的命令默认都以root boot2docker
运行。
当你作为sudo
运行时,你会看到错误,因为sudo
没有设置DOCKER_HOST
env,只有你的用户。
你可以通过做一个确认:
$ env
然后a
$ 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 .
这将build立您的docker图像,您可以通过执行以下操作来看到:
docker images
然后,运行你的容器,你可以做一个:
docker run your-image-name:your-tag
这个运行命令将从你用Dockerfile
和你的build命令创build的映像启动一个容器,然后一旦你的script.sh
执行完成,它就会完成。
您可以使用shellinit
快速设置您的环境
在你的命令提示符下执行:
$(boot2docker shellinit)
这将填充和导出环境variables并初始化其他function。
在我的MAC上,当我在terminal上启动boot2docker-vm使用
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
设置这些环境variables后,我能够运行构build没有问题。
更新[2016-04-28]如果您使用的是Docker的最新版本,您可以执行此操作
eval $(docker-machine env)
将设置环境
( docker-machine env
将打印出口报表)
如果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
我也有这个错误。 但是,我没有使用boot2docker,而是在Ubuntu上安装了“普通” 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
对于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
docker工再次工作
在Linux中,首先执行sudo service docker start
在terminalsudo service docker start
。
如果您使用的是CentOS 7,并且您已经通过yum安装了Docker,请不要忘记运行:
$ sudo systemctl start docker $ sudo systemctl enable docker
这将启动服务器,并在启动时自动重新启动。
要设置您的环境并为将来的会话保留,您可以执行以下操作:
echo 'export DOCKER_HOST="tcp://$(boot2docker ip 2>/dev/null):2375";' >> ~/.bashrc
然后: source ~/.bashrc
而且您的环境将在每个会话中设置
第一个/var/run/docker.sock引用您的boot2docker虚拟机中的相同path。 Correcly写入Windows /var/run/docker.sock
你,也许不是OP,但是有人可能会有一个名为/var/run/docker.sock/
的目录,这是因为你使用了多less次黑客和斜杠来使docker(特别是noobs)正确地工作。 删除该目录,然后重试。
这帮助我在CentOS 7上运行。