当前位置: 首页 > 面试题库 >

复制Docker容器进行调试

沈良策
2023-03-14
问题内容

我有一个正在运行的Docker容器。我已经在运行的Docker容器中做了一些有用的工作。我已经完成了这些工作,而不是dockerfile的一部分,我已经在容器内完成了它。[例如:我已经在容器内安装了ping,而不是从docker文件中安装了ping]

现在,我被困在一个地方。我不确定是否要在同一个容器中进行调试,否则可能会使到目前为止在容器中所做的事情松懈。

因此,我想使用该运行容器中的所有可用东西创建它的副本[例如,我不想从映像中构建一个容器,并重复在运行容器中实现的所有成功步骤,然后开始调试。我不想在第二个容器中重新安装ping]。

总计,我如何复制容器?如果不是,所有的可能性是什么?


问题答案:
  1. 创建一个基本映像并运行它

    docker run -it <base_image> /bin/bash
    
  2. 进行必要的更改

    yum install ping
    
  3. 用新名称提交

    docker commit <hash tag of running container> new_image
    

现在,如果您通过运行打开new_image

docker run -it new_image /bin/bash

您可以看到其中ping已安装。

打开base_image,并且没有ping安装。

希望它回答了您的问题。



 类似资料:
  • 因此,我想用运行容器中的所有可用内容创建一个它的副本[就像我不想从image构建一个容器,重复运行容器中实现的所有重要步骤,然后开始调试一样。我不想在第二个容器中重新安装ping]。 完全如此,我如何复制一个容器?如果不是,所有的可能性是什么?

  • 问题内容: 我对docker,redis和任何类型的网络都是陌生的(至少我了解python!)。首先,我想出了如何获取redis docker映像并在docker容器中运行它: 据我了解,此Redis实例具有可用于连接其他容器的端口6379。 如果运行以下命令,则可以与redis实例进行交互并生成key:value对: 我已经弄清楚如何制作并运行安装了redis库的docker容器,该容器将运行p

  • 我正在考虑使用Docker在持续集成(CI)服务器上构建我的依赖项,这样我就不必在代理本身上安装所有的运行时和库。 为了实现这一点,我需要将在容器中构建的构建构件复制回主机中。有可能吗?

  • 我正在开发基于多个容器的node JS/Express的微服务。部署了不同docker组件的不同容器组。一个docker compose包含4个docker容器,而另一个docker compose包含3个docker容器。Docker compose为每个Docker compose创建了自动网络,例如BackendA_default和BackendB_default,因此每个后端都不能相互通信

  • 我有一个正在运行的MySQL容器,我在里面导入了很多数据(花了我几个小时)。 现在,我想在主机上使用GUI应用程序(DBeaver)从这个容器中查询数据。有没有一种方法可以将正在运行的容器的网络公开给主机,以便连接到它? 我一直在四处寻找,到目前为止最有希望的选择是运行一个带有标签的新容器,但是当我这样做的时候,所有导入的数据都不见了。 谢谢你!

  • 抱歉,如果这是一个愚蠢的问题,但是: 我来自vagrant公司,在那里我们的每台机器中都有一个功能齐全的OS,在那里运行我们可以看到OS进程和我们的服务(我在一定程度上知道在VMs和Docker中运行的应用程序之间的区别)。 然后,我刚刚使用docker-compose构建了一些容器,并使用bash(基于debian:jessie映像)登录到一个容器中。运行后,我只能看到我安装的服务,而不能看到单