Rai*_*aif 102 docker docker-compose
是否有理由使用run启动docker-compose.yml文件或者您应该使用up?
我知道run可以启动一个特定的容器,但我指的是你在没有指定容器的情况下使用它的情况,以便启动所有的yml容器.
Von*_*onC 113
如上所述docker-compose run:
run传递的命令会覆盖服务配置中定义的命令.
例如,如果启动了Web服务配置bash,则将其docker-compose run web python app.py覆盖python app.py.第二个区别是
docker-compose run命令不会创建服务配置中指定的任何端口.
这可以防止端口与已打开的端口发生冲突.如果您确实希望创建服务的端口并将其映射到主机,请指定--service-ports标志:
$ docker-compose run --service-ports web python manage.py shell
Run Code Online (Sandbox Code Playgroud)
因此,除非您有这些特定需求(覆盖命令或在不同端口上只运行一个容器),docker-compose up(即使对于一个容器)也足够了.
你能帮忙解释为什么或什么时候不想创建端口?这就是他们可能与已经开放的端口冲突的原因
只是因为docker-compose run为您的服务运行一次性命令.
这意味着,如果您已经执行过docker-compose up,则所有容器都已在其指定端口上运行docker-compose.yml.
做docker-compose run在这个阶段(以执行一断开指令),如果它是关于相同的端口,将立即失效.因此默认不创建这些端口.
另一个用例(在Compose环境变量中引用):
要查看服务可用的环境变量,请运行
docker-compose run SERVICE env.
qui*_*hts 23
我想指出,如果你使用Python与pdb调试器:
import pdb; pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)
如果您使用以下命令执行脚本,它将不会删除到shell:
docker-compose up
Run Code Online (Sandbox Code Playgroud)
但是,如果您使用run,它将按预期下拉到调试器:
docker-compose run
Run Code Online (Sandbox Code Playgroud)
Jay*_*Jay 21
docker docs有一个答案。
通常,您希望
docker-compose up. 使用up启动或重新启动所有定义的服务docker-compose.yml。在默认的“附加”模式下,您会看到来自所有容器的所有日志。在“分离”模式 (-d) 下,Compose 在启动容器后退出,但容器继续在后台运行。该
docker-compose run命令用于运行“一次性”或“临时”任务。它需要您要运行的服务名称,并且只为正在运行的服务所依赖的服务启动容器。使用run运行测试或执行管理任务,如删除或添加数据的数据量的容器。该run命令的作用类似于docker run -ti它向容器打开一个交互式终端,并返回与容器中进程的退出状态匹配的退出状态。
| 归档时间: |
|
| 查看次数: |
60067 次 |
| 最近记录: |