我正在尝试在 Docker 容器中安装 Web 应用程序。
我使用的是 OS X Yosemite 版本 10.10.1
我一直在关注这里关于 Dockerizing Node.js Web App 的教程:https://docs.docker.com/examples/nodejs_web_app/ https://docs.docker.com/examples/nodejs_web_app/
我在以下位置下载并设置了 boot2docker osx-installer:github.com/boot2docker/osx-installer/releases/tag/v1.4.1
-
我按以下顺序在控制台中输入这些命令:
$ boot2docker init
$ boot2docker start
$ (boot2docker shellinit)
-
然后,我按照终端的指示,使用以下命令设置环境变量:
$ export DOCKER_TLS_VERIFY=1
$ export DOCKER_HOST=tcp://192.168.59.103:2376
$ export DOCKER_CERT_PATH=/Users/myusername/.boot2docker/certs/boot2docker-vm
此时,一切似乎都正常。
-
然后,按照 Dockerizing Node.js 应用程序的教程,我到达这里:https://docs.docker.com/examples/nodejs_web_app/#building-your-image https://docs.docker.com/examples/nodejs_web_app/#building-your-image,在其中输入命令:
$ sudo docker build -t <your username>/centos-node-hello .
-
然后要求输入密码,然后输入密码后我不断收到此错误消息:
Sending build context to Docker daemon
FATA[0000] Post http:///var/run/docker.sock/v1.16/build?rm=1&t=myusername%2Fcentos-node- hello: dial unix /var/run/docker.sock: no such file or directory
这是我的环境变量:
`TERM_PROGRAM=Apple_Terminal
TERM=xterm-256color
SHELL=/bin/bash
TMPDIR=/var/folders/vb/vmd78vk57mqd6fv7sqb544pc0000gn/T/
DOCKER_HOST=tcp://192.168.59.103:2376
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.BBIW525XNA/Render
TERM_PROGRAM_VERSION=343
OLDPWD=/Users/myusername/Desktop
TERM_SESSION_ID=FAD1F3F1-35DF-4183-A47A-08749EAFEACB
USER=myusername
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.A6ZjHwx8eq/Listeners
__CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0
DOCKER_TLS_VERIFY=1
PATH=/Users/myusername/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
PWD=/Users/myusername/Desktop/docker
LANG=en_CA.UTF-8
vXPC_FLAGS=0x0
XPC_SERVICE_NAME=0
DOCKER_CERT_PATH=/Users/myusername/.boot2docker/certs/boot2docker-vm
HOME=/Users/myusername
SHLVL=1
LOGNAME=myusername
DISPLAY=/private/tmp/com.apple.launchd.IesbS7VdCy/org.macosforge.xquartz:0
SECURITYSESSIONID=186a5
_=/usr/bin/env`
我的 Docker 版本:
`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
.
原因如下:
当你使用boot2docker
, the docker
守护进程在虚拟机中运行,本质上是在不同的机器上。与一个人沟通docker
如果守护程序位于另一台计算机上,则必须使用 TLS 连接(通过 HTTPS 连接到守护程序的 REST API)。这就是为什么你必须设置DOCKER_HOST
and DOCKER_CERT_PATH
。由于守护进程运行在不同的机器上,因此您不需要成为 root 即可与其通信,因为传出的 http 连接不需要 root,这与尝试与该守护进程通信不同。unix:///var/run/docker.sock
socket.
但当你跑步时sudo docker
,突然之间你就变成了一个不同的用户,你root
。未设置您作为常规帐户设置的环境变量。所以docker
CLI 使用其默认通信方法:unix
插座。套接字不存在,因为守护进程正在另一台机器上运行(boot2docker
虚拟机)。因此出现错误消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)