一尘不染

我应该使用docker-compose up还是运行它?

docker

有没有使用run启动docker-compose.yml文件的理由,还是应该使用up

我了解这run可以启动特定的容器,但是我指的是在不指定容器的情况下使用它的情况,这样它就可以启动所有yml容器。


阅读 1075

收藏
2020-06-17

共1个答案

一尘不染

docker-compose run(2015)中所述

运行传递的命令将覆盖服务配置中定义的命令
例如,如果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

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

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

仅仅是因为docker-compose run可以为您的服务运行一次性命令。
这意味着,如果您已经执行过a docker-compose up,则所有容器都已经在从的指定端口上运行docker-compose.yml
如果docker-compose run在此阶段执行a(一次性执行命令),如果它遵循相同的端口,则将立即失败。因此,默认情况下不创建这些端口。


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

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


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

2020-06-17