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

为什么docker启动比docker运行快得多

皮承基
2023-03-14

我使用以以下命令开头mysql映像

 docker run --name test-mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d -p 3306:3306 mysql

当docker在后台运行时,另一个应用程序连接到端口3306大约需要一分钟的时间。

之后,我用docker stop test-mysql停止这个容器,然后用docker start test-mysql启动它。在第二种情况下,使用start命令,应用程序可以连接到端口3306,仅在5秒后。

现在我用Docker commit test-mysql2从停止的容器中获取快照,并用Docker run-d mysql2运行它,但是在这种情况下,应用程序可以在一分钟后连接到mysql2!

所以,

是否有任何方法在运行容器后采取快照,可以在10秒内负责?

注意:Mysql映像有一个入口点,它需要一分钟以上的时间才能启动。

共有1个答案

苗阳文
2023-03-14
  1. 查看此处:https://stackoverflow.com/a/34783353/7719775获取第一个答案。
  2. 对于第二个,您应该查看https://docs.docker.com/engine/reference/commandline/commit/,但即使在这种情况下,docker启动也会比docker运行命令快
 类似资料:
  • 目前我正在用微服务和Docker-Container进行测试。在我上次尝试使用Micronaut-Server时,我看到了启动本地(cmd)和启动Docker的启动时间之间的差异。但让我觉得奇怪的是,集装箱的速度快得多。 我正在用Gradle创建一个可运行的jar(更准确地说是一个shadowjar--不确定它的确切区别是什么)。然后我用这个jar文件构建一个Docker-Image。两者的sta

  • 根据我的理解,VM使用硬件虚拟化,而Docker使用软件虚拟化,因此具有更好的性能(例如,我在Windows机器上运行一个Dockerized Linux)。但究竟是什么原因让OS虚拟化比硬件虚拟化更快呢?

  • 但是只有使用运行它才允许用户通过终端与容器化进程交互。所以我想知道,“分配一个伪tty”是什么意思,因为即使在没有的情况下运行,进程写入的内容也会传递到终端(进程将有一个管道作为stdout,而不是tty)? 我读到这个答案说,您可以运行来获得“终端支持”,例如文本着色等。我已经做了以下实验: 并运行此映像,不使用。因为我是从终端运行它(总是从某个终端运行,不是吗?)我能看到一个红色的“你好世界”

  • 问题内容: 我正在经历 递增/递减运算符 ,并且 遇到了这样的情况:如果在这种情况下以递减形式运行循环,则其运行速度将比相同的以递增形式运行的循环快。 我期望两者将花费相同的时间,因为将遵循相同数量的步骤。我在网上搜索,但找不到令人信服的答案。是因为与增量运算符相比,减数运算符花费的时间更少吗? 问题答案: 这是因为在字节码中,与0比较与与非零数字比较是不同的操作。实际需要先将数字加载到堆栈上,然

  • 问题内容: 我使用以下命令创建了容器: 以下是命令: 真的没有太多要说的,我希望容器能启动并保持正常运行。这是日志: 问题答案: 您正在尝试运行,它是需要tty 才能运行的交互式外壳。使用,在“分离”模式下运行此命令实际上没有任何意义,但是您可以通过添加到命令行来做到这一点,以确保容器具有与其关联的有效tty并保持连接状态: 在启动分离的容器时,您通常会运行某种长期存在的非交互式进程(例如,或We

  • 我需要让 hbase 跑在 arm 上 而且想用 docker 所以我写了下面的 Dockerfile 我先跑在 x86 上,看看 ok 不 ok ,所以上面的 java home 是 amd64 的 但是不行 在我的虚拟机上,直接 JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 bash bin/hbase-daemon.sh start master 就