87

我是码头工人的新手。我有一个将数据加载到 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 设置有问题吗?

当我做 adocker 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

我错过了什么吗?

4

12 回答 12

87

您不需要像sudo使用时boot2docker那样运行任何 docker 命令,因为传入boot2dockerVM 的每个命令默认都以 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完成执行后完成。

于 2014-08-18T22:25:25.907 回答
45

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

在您的命令提示符处执行:

$(boot2docker shellinit)  

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

于 2014-11-07T18:43:07.500 回答
26

当我在终端上启动 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将打印导出语句)

于 2014-11-01T13:31:04.760 回答
26

docker pulldocker 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

于 2015-04-09T15:54:10.623 回答
16

我也遇到了这个错误。不过,我没有使用 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

于 2015-03-28T11:42:50.853 回答
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?

我所做的只是:

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

码头工人再次工作

于 2015-05-26T18:35:55.427 回答
6

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

于 2015-07-19T09:51:07.130 回答
5

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

$ sudo systemctl start docker
$ sudo systemctl enable docker

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

于 2015-09-16T18:56:28.753 回答
4

要设置您的环境并为将来的会话保留它,您可以执行以下操作:

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

然后: source ~/.bashrc

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

于 2014-12-03T21:10:17.427 回答
0

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

于 2016-12-19T05:44:05.433 回答
0

/var/run/docker.sock/您,也许不是 OP,但由于您使用 docker(尤其是菜鸟)进行了多少次黑客攻击和斜线处理以使事情正确,因此有人可能已经调用了一个目录。删除该目录并重试。

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

于 2017-01-13T13:13:44.877 回答
0

我已经使用离线方法安装了 docker,并且服务器重启后 docker 没有运行。所以,我执行了下面对我有用的命令!

/usr/bin/dockerd > /dev/null
于 2022-03-02T18:34:20.927 回答