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

我应该使用docker-composup还是运行?

卫乐童
2023-03-14

是否有理由使用run启动一个docker-compose.yml文件,或者您应该只使用up

我知道run可以启动一个特定的容器,但我指的是在不指定容器的情况下使用它以启动所有yml容器的情况。

共有3个答案

归翔
2023-03-14

docker docs给出了答案。

通常,您需要docker编写。使用up启动或重新启动docker compose中定义的所有服务。yml。在默认的“附加”模式下,可以看到所有容器中的所有日志。在“分离”模式下(-d),Compose在启动容器后退出,但容器继续在后台运行。

docker compose run命令用于运行“一次性”或“临时”任务。它需要您想要运行的服务名称,并且只为运行服务所依赖的服务启动容器。使用run运行测试或执行管理任务,如删除数据或向数据卷容器添加数据。run命令的作用类似于docker run-ti,因为它打开了容器的交互式终端,并返回与容器中进程的退出状态匹配的退出状态。

束研
2023-03-14

我想指出,如果您在pdb调试器中使用Python:

import pdb; pdb.set_trace()

如果您使用以下命令执行脚本,它将不会落到shell中:

docker-compose up

但是,如果使用run,它将按预期下降到调试器:

docker-compose run
卫华奥
2023-03-14

如《docker compose run》(2015)中所述

run传递的命令将覆盖服务配置中定义的命令
例如,如果使用bash启动web服务配置,则docker compose运行web python应用程序。py用python应用程序覆盖它。py

第二个区别是docker compose run命令不创建服务配置中指定的任何端口
这可防止端口与已打开的端口发生冲突。如果确实希望创建服务的端口并将其映射到主机,请指定--service ports标志:

$ docker-compose run --service-ports web python manage.py shell

因此,除非您有这些特定需求(覆盖命令或在不同端口上仅运行一个容器),docker compose up(即使对于一个容器)就足够了。

您能否帮助解释为什么或何时不希望创建端口?这就是它们可能与已打开的端口冲突的原因或时间

仅仅因为docker-composerun是为您的服务运行一次性命令而制作的。
这意味着,如果您已经执行了docker-composeup,那么您的所有容器都已经在其指定的端口上从<-plhd--0/>
在这个阶段执行docker-composerun(执行一次性命令),如果它尊重相同的端口,将立即失败。因此默认不创建这些端口。

另一个用例(在Compose环境变量参考中):

若要查看哪些环境变量可用于服务,请运行docker-comment run SERVICE env

这些命令的最新版本(2019年)在docker/docker.github.io上:

  • docker compose run
 类似资料:
  • 问题内容: 有没有使用启动文件的理由,还是应该使用? 我了解这可以启动特定的容器,但是我指的是在不指定容器的情况下使用它的情况,这样它就可以启动所有yml容器。 问题答案: 如(2015)中所述 运行传递的命令将覆盖服务配置中定义的命令 。 例如,如果Web服务配置以开头,则用覆盖它。 第二个区别是该命令 不创建服务配置中指定的任何端口 。 这样可以防止端口与已经打开的端口发生冲突。如果确实要创建

  • 问题内容: 我正在使用c / c 为osx和linux开发命令行界面可执行文件。该项目将链接到opencv。我应该使用libc 还是libstdc ++? 问题答案: 我会为每个操作系统使用本机库,即GNU / Linux上的libstdc 和Mac OS X上的libc 。 libc 在GNU / Linux上不是100%完整的,而libstdc 更完整时使用libc并没有真正的优势。另外,如果

  • 问题内容: 和CSS 和有什么不一样?我应该使用哪一个?为什么? 问题答案: 所有这些答案似乎都是不正确的。与直觉相反,在CSS 中不是pixel 。至少不是在简单的物理意义上。 从W3C,EM,PX,PT,CM,IN…阅读本文,了解如何为CSS发明一个“神奇的”单元。的含义因硬件和分辨率而异。(该文章是最新的,最新更新为2014-10。) 我自己的思考方式: px单位是CSS的魔术单位。它与当前

  • 问题内容: 我正在一个将Angular和Underscore都作为依赖项的项目。 当我需要创建对象的副本时,根据当时的心情,我可以使用或 在我看来,这些方法中的一种可能比另一种更快速/可靠/健壮。 假设已经包含两个库,那么这两个函数中的任何一个是否存在使另一个函数更好或更坏使用的已知问题? 问题答案: 关于您的问题: angular.copy和_.clone是不同的。这不是哪个更好的问题,而是关于

  • 问题内容: 我想从文本文件中读取每一行并将它们存储在ArrayList中(每一行是ArrayList中的一项)。 到目前为止,我知道BufferedInputStream写入缓冲区,并且仅在缓冲区为空时才进行另一次读取,这可以最大程度地减少或至少减少操作系统的操作量。 我正确吗-我说得通吗? 如果以上情况是在任何情况下,任何人都想使用DataInputStream。最后,我应该使用这两个中的哪一个

  • 问题内容: 在numpy中,可以使用切片语法中的’newaxis’对象创建长度为1的轴,例如: 该文档的状态是一个也可以用代替,效果是完全一样的。 有什么理由选择一个?是否有一般偏好或样式指南?我的印象是更受欢迎,可能是因为它更明确。那么,有什么理由允许这样做? 问题答案: 之所以被允许,是因为它仅仅是的别名。 作者之所以选择它,是因为他们需要一个方便的常量并且可用。 至于为什么你应该更喜欢过:主