我是码头工人的新手。我有一个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]
我正在尝试使用以下方法安装预先构建的图像:
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 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
我错过了什么吗?
答案 0 :(得分:86)
当您使用sudo
时,不需要以boot2docker
运行任何docker命令,因为默认情况下,传递到boot2docker
VM的每个命令都以root身份运行。
当您以sudo
的身份运行时,您会看到错误,因为sudo
没有设置DOCKER_HOST
env,只有您的用户才这样做。
您可以通过执行以下操作来确认:
$ 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 images
然后,要运行容器,您可以执行以下操作:
docker run your-image-name:your-tag
此运行命令将从您使用Dockerfile
和构建命令创建的映像启动容器,然后在script.sh
执行完毕后完成。
答案 1 :(得分:45)
您可以使用shellinit
在命令提示符下执行:
$(boot2docker shellinit)
这将填充并导出环境变量并初始化其他功能。
答案 2 :(得分:25)
当我使用
在终端上启动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] 如果您使用的是最新版本的泊坞窗,您可以
eval $(docker-machine env)
将设置环境
(docker-machine env
将打印导出语句)
答案 3 :(得分: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
如果它没有运行,你可以通过
启动它 sudo service docker start
对于Ubuntu 15及以上版本使用
sudo systemctl start docker
答案 4 :(得分:16)
我也遇到了这个错误。虽然,我没有使用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
答案 5 :(得分:9)
对于Windows上的boot2docker,看到后:
split(/\s*[,\/]\s*|\s+/);
我所做的只是:
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
码头工人再次工作
答案 6 :(得分:6)
在Linux中,首先在终端中执行sudo service docker start
。
答案 7 :(得分:5)
如果您使用的是CentOS 7,并且已经通过yum安装了Docker,请不要忘记运行:
$ sudo systemctl start docker
$ sudo systemctl enable docker
这将启动服务器,并在启动时自动重新启动它。
答案 8 :(得分:4)
要设置环境并将其保留在以后的会话中,您可以执行以下操作:
echo 'export DOCKER_HOST="tcp://$(boot2docker ip 2>/dev/null):2375";' >> ~/.bashrc
然后:
source ~/.bashrc
您的环境将在每个会话中设置
答案 9 :(得分:0)
第一个/var/run/docker.sock引用boot2docker虚拟机中的相同路径。 Correcly写的是windows /var/run/docker.sock
答案 10 :(得分:0)
你,也许不是OP,但有人可能有一个名为/var/run/docker.sock/
的目录,因为你有多少次黑客攻击和砍伐以使用docker(特别是noobs)来解决问题。删除该目录,然后重试。
这帮助我开始在Centos 7上工作。