同一目录下两次执行docker-compose up是否会创建多个容器实例?
Docker Compose 同目录重复执行up命令的行为说明
默认场景下,你在同一目录下两次执行docker-compose up,既不会启动两个独立容器实例,也不会直接附加到已有运行容器,而是会直接报错终止执行,具体原理和相关操作说明如下:
- Docker Compose 默认会以当前工作目录的名称作为项目唯一标识,同一项目下的服务容器、网络、存储卷等资源名称全局唯一,不允许重复创建
- 第一次执行
docker-compose up时,Compose 会按照配置文件创建并启动对应服务的容器,此时该项目下的目标服务容器已经处于存在且运行的状态 - 第二次在同目录执行不带额外参数的
docker-compose up时,Compose 会检测到对应服务的容器已存在、名称被占用,直接抛出类似container "xxx" is already in use by container "xxxid". You have to remove (or rename) that container to be able to reuse that name.的错误后退出
如果你需要附加到第一次启动的正在运行的容器的输入输出流、查看实时日志,可以使用以下命令:
- 跟踪所有服务的实时日志:
docker-compose logs -f - 附加到指定服务的运行终端:
docker-compose attach <服务名>
如果你确实需要基于同一份配置启动两套完全独立的容器实例,可以在执行命令时指定不同的自定义项目名,示例:
# 第一次启动,使用默认项目名 docker-compose up # 第二次启动,指定自定义项目名,会创建完全独立的新资源 docker-compose -p my_second_project up
内容的提问来源于stack exchange,提问作者John Gordon
相关产品推荐
相关产品推荐

