docker docker 内,post http 错误

docker within docker, post http error

我正在尝试 运行 docker docker。唯一的目的是实验性的,我绝不试图实现任何功能,我只是想检查当 docker 来自另一个 docker 时它的表现如何。

我通过 boot2docker 从我的 mac 启动 docker,然后启动一个简单的 ubuntu 图像。

$ docker run -t -i ubuntu /bin/bash

然后我继续安装 docker 和 python。

root@aa9263c874e4: apt-get update
root@aa9263c874e4: apt-get install -y docker.io python2.7 

它能够连接到互联网,因为它执行了这个 apt-get。然后,当我尝试从 docker 中启动 docker 实例时出现以下错误:

root@aa9263c874e4: sudo docker run -t -i ubuntu /bin/bash
2015/01/09 08:59:09 Post http:///var/run/docker.sock/v1.12/containers/create: dial unix /var/run/docker.sock: no such file or directory

知道我错过了什么吗?我得到一个 post 错误似乎很奇怪,因为它似乎能够通过 apt-get 连接到互联网之前。

我之前在 howto run a Docker container inside Docker 上回答过类似的问题。

To run docker inside docker is definitely possible. The main thing is that you run the outer container with extra privileges (starting with --privileged=true) and then install docker in that container.

Check this blog post for more info: Docker-in-Docker.

An excellent use case for this is described in this entry. The blog describes how to build docker containers within a Jenkins docker container.

因此,我认为您的 POST 问题与连接到互联网无关,因为容器正在尝试与 docker 套接字通信。要解决这个问题,只需在启动时在外层容器上添加 --privileged=true 标志,如下所示:

docker run --privileged=true ...