我的docker环境(在CentOS VM上)运行了一些docker容器,里面需要docker。所以我在容器中挂载/var/run/docker.sock
。
现在我正在创建/etc/default/docker
,我将
DOCKER_OPTS="-H tcp://xx.xx.xx.xx:2376"
但现在我的问题是:哪个IP是xx.xx.xx.xx
?它是主机的IP还是容器的IP? +这是让docker容器使用套接字的最佳方式吗? (=在docker中使用docker)
答案 0 :(得分:0)
在Docker中使用Docker可能会很棘手。我建议使用带有dind
标记的官方Docker镜像。您不需要在选项中指定DOCKER_HOST
,因为它将被正确配置。例如跑步:
docker run -ti --name docker -v /var/run/docker.sock:/var/run/docker.sock --privileged docker:dind sh
将您带到容器内的shell。然后,如果运行docker ps
,您应该看到主机上运行的容器列表。请注意,在这种情况下需要--privileged
标志,因为我们正在访问容器外部的Docker守护程序。
希望这有帮助!
迪伦
由于Alexander在评论中突出显示的安全问题,请从上述命令中删除--privileged
标志。您也可以删除dind
标记,因为它不是必需的。
答案 1 :(得分:0)
在docker中运行docker并不是那么简单,你可能有充分的理由这样做。
我最后一次这样做时,我正在使用dind
(docker中的docker)并且必须安装套接字(/var/run/docker.sock
)并将其与--privileged
组合使用旗。但是现在可能已经发生了变化(参见https://github.com/docker/docker/pull/15596)并且应该能够在没有套接字安装的情况下运行它:
docker run --privileged -d docker:dind
因此,请务必查看https://hub.docker.com/_/docker/
上的综合指南