当前位置: 首页 > 知识库问答 >
问题:

Docker中的Docker[重复]

长孙弘盛
2023-03-14

我们有应用程序,它将旋转短期(短期)docker容器。现在,它运行在Ubunut16.04服务器(VM)上,我们在同一台服务器上安装了docker和nodejs。我们有在同一台服务器上运行的nodejs应用程序,所以每当有请求传入时,nodejs应用程序都会启动docker容器并在docker容器内执行用户输入。一旦docker完成其工作,或者如果它用完了管理定义的资源,则docker容器将被强制终止(docker kill)并删除(docker rm)。

现在我的问题是,在Ubunte16.04 docker容器中运行Ubunte16.04 docker容器并运行nodjes应用程序和短期docker容器是否是最佳实践。

简而言之,在其他docker容器中运行docker。

共有1个答案

慕容聪
2023-03-14

Docker-in-Docker通常被认为是脆弱且难以维护的,并且使用它不是最佳实践。https://hub.docker.com/_/docker/对此进行了一些讨论。

一种简单(但潜在危险)的重新安排方法是,使用Docker run-v/var/run/Docker,让服务器进程访问主机的Docker套接字。袜子:/var/run/docker。袜子。然后,它可以根据需要启动自己的Docker容器。请注意,如果这样做,这些子容器的docker run-v选项引用的是主机的文件系统,而不是调用容器的文件系统,因此,如果您试图使用文件系统传输数据,这可能会很棘手。还要注意的是,能够以这种方式运行任何Docker命令都会提供对主机的无限制访问,因此您需要非常小心如何启动容器。

更大的重新设计是引入某种消息排队系统;我过去成功地使用过RabbitMQ,但还有许多其他选择。服务器进程不直接启动子进程,而是将消息写入队列。与频繁启动和停止的短命进程不同,您有一个从队列中读取作业并执行作业的长寿工人。这使您进入了一个更为成熟的Docker空间,在这里无需动态启动和停止容器,您可以在非Docker环境中轻松测试Node Rabbit worker堆栈。

 类似资料:
  • 我对docker比较陌生。我想使用一个有卷的数据库来持久化。我在windows 10中。 我想检查在我的机器中创建的卷。 当我运行命令时 因为这是一个windows框,所以我没有文件夹/var/lib/docker/volumes/。windows中的volumn文件夹具体在哪里,以便我可以在需要时备份它。

  • 问题内容: 我在用于CI的docker设置中有一个docker。本质上,该机器上装有jenkins CI服务器,该服务器使用相同的机器docker套接字为CI创建节点。 直到我最近更新了docker为止,这一直很好。我已经确定了问题,但似乎无法找出正确的方法来使它起作用。 这就是我的猜测。我可以从容器中访问主机docker套接字,但似乎无法授予jenkins用户许可。 我已经添加了docker组,

  • 我在CI的docker设置中有一个docker。本质上,机器上有一个jenkins CI服务器,它使用相同的机器docker套接字为CI创建节点。 这是伟大的工作,直到我最近更新了docker。我已经发现了这个问题,但是我似乎找不出正确的方法来让它工作。 这就是我的猜测。我可以从容器中访问主机docker套接字,但我似乎无法向jenkins用户授予权限。 我已经添加了docker组,还将jenki

  • 正如标题所说。我需要能够检索docker主机的IP地址和从主机到容器的端口映射,并在容器内部执行此操作。

  • 问题内容: 我正在运行一个Jenkins集群,其中在Master和Slave中,它们都作为Docker容器运行。 主机是在MacOS上运行的最新的boot2docker VM。 为了使Jenkins能够使用Docker执行部署,我将docker.sock和docker客户端从主机安装到Jenkins容器,如下所示: 在将卷装载到Jenkins容器中运行的Docker容器时,我遇到了问题。例如,如果