docker - 在 docker 内运行 docker 时出错

标签 docker boot2docker docker-compose

我的开发机器是OSX。我使用 boot2docker 为我的开发运行 docker(称之为 docker-1)。我的应用程序还使用 docker 容器(所以它是在 docker 内运行的 docker - 称之为 docker-2)。

通常我在我的开发机器上使用 docker-compose 来启动 docker-1。问题是当我运行时

docker-compose run web /bin/bash



然后在 docker-1 bash 提示符下,我尝试启动 docker:

service docker start



该服务似乎启动,创建一个 pid 文件,但死了。 /var/log/docker.log阅读:
time="2015-05-21T12:40:23Z" level=warning msg="Udev sync is not supported. This will lead to unexpected behavior, data loss and errors" time="2015-05-21T12:40:23Z" level=error msg="There are no more loopback devices available." time="2015-05-21T12:40:23Z" level=info msg="+job serveapi(unix:///var/run/docker.sock)" time="2015-05-21T12:40:23Z" level=info msg="Listening for HTTP on unix (/var/run/docker.sock)" time="2015-05-21T12:40:23Z" level=fatal msg="Shutting down daemon due to errors: error intializing graphdriver: loopback mounting failed"
所以一开始我以为这是docker的问题。但是当我手动启动 docker-1 时 - 绕过 docker-compose 并像这样运行它:

docker run --privileged=true -ti website /bin/bash



然后尝试在提示符中启动 docker,一切都按预期工作:

service docker start



成功 - docker 已启动并正常运行!

这让我相信 docker-compose 存在问题,或者更有可能是我的设置有问题。但我浏览了手册,并没有看到任何引起我注意的东西。

docker -compose.yml
db: image: postgres ports: - "5432" redis: image: redis ports: - "6379" web: privileged: true build: . volumes: - .:/app environment: - A=b ports: - "3001:3000" links: - db - redis

最佳答案

不确定这是否会在 OSX 上修复,但是当使用需要在 docker 中运行 docker 的 CI 工具执行此类操作时,它现在是卷映射。

尝试将以下内容添加到您的 docker run 命令中:

-v /var/run/docker.sock:/var/run/docker.sock

关于docker - 在 docker 内运行 docker 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30377285/

相关文章:

python - 无法在 Docker Ubuntu 主机中使用 cv2.VideoCapture(0) 打开相机

linux - 用于 eclipse 的 Docker 插件

docker - 使用托管在 docker 上的私有(private)注册表

docker - 如何在Docker环境中的根目录(/)中创建安装配置

docker - 如何调出具有主机名和IP地址的容器,以便它们可以串行运行?

docker-compose 给出错误 UnicodeDecodeError : 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)

iis - 运行IIS Windows容器

linux - WSL2 Docker Linux 卷权限问题

macos - 如何在 OSX 上的事件 docker 机器之间切换?

docker - 传入变量或回答 Dockerfile