如何以安全的方式在docker容器内使用docker

时间:2017-02-28 10:57:14

标签: docker

我的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)

2 个答案:

答案 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/

上的综合指南