首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker容器可以在其他docker容器中运行吗?

docker容器可以在其他docker容器中运行吗?
EN

Stack Overflow用户
提问于 2020-10-21 04:35:25
回答 2查看 88关注 0票数 0

我正在使用jupyterhub和docker spawner,第二个做的是,当用户进入jupyterhub时,它会为他运行docker容器。我现在想把jupyterhub写成这样:https://hub.docker.com/r/jupyterhub/jupyterhub/,但我的问题是(我是新手)如果jupyterhub在容器中运行,它会产生用户容器,这个容器是在第一个容器中运行,还是在我的计算机上独立运行?

EN

回答 2

Stack Overflow用户

发布于 2020-10-21 04:42:23

是。您将需要使用特权模式创建容器,并共享docker套接字。除此之外,您还需要在实际镜像中提供docker客户端:

代码语言:javascript
复制
docker run -ti --privileged -v /var/run/docker.sock:/var/run/docker.sock <your image>

参考:https://itnext.io/docker-in-docker-521958d34efd

票数 0
EN

Stack Overflow用户

发布于 2020-10-21 05:06:50

是的,这是可能的,通常在docker或short dind中称为docker,并不推荐(甚至由贡献了补丁使其成为可能的杰罗姆·佩塔佐尼)。你可以在his blog post中找到更长的解释。)

然而,如果你只是想在你的主机上的另一个容器中构建和运行docker容器,你可以让你的容器"docker capable":

对于支持docker的容器,它通常只需要两件事(要使用docker的容器,在本例中是jupyterhub容器):

docker client必须安装在容器中(例如:docker run /var/run/docker.sock:/var/run/docker.sock -v <image>)

  • The -
  1. ( docker client)必须安装在docker容器

注意,支持停靠的容器没有自己的停靠守护进程。它只能使用主机停靠守护进程,这意味着在具有停靠功能的容器和任何停靠容器(从主机和支持停靠的容器开始)中不会有另一个“停靠器层”在您的主机的相同上下文中运行。

这意味着您不会获得任何额外的隔离,这可能会令人困惑,尤其是当您使用主机挂载时。考虑这个例子:

  1. 您的主机上有/data文件夹,其中包含文件test1.txt,而/data是支持停靠的容器,其中包含文件夹/data以及文件test3.txt和test4.txt (容器A没有任何主机装载的卷)
  2. 您可以从容器A中执行docker run --name B -v /data:/data debian:stretch ls /data -->通过容器A启动一个新的容器B -->输出将为test1.txt test2.txt,因为它仍将在您的主机上下文中运行,并且主机装载始终引用您的主机文件系统。

还要注意,拥有对装载了docker socket的容器的访问权限将为该容器中的docker组中的任何用户提供对主机的相当大的root访问权限,即使没有使用--特权运行支持docker的容器也是如此。(只有真正的dind才需要)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64452953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档