Docker - 无法从同一.sh文件执行多个docker run命令

时间:2017-01-23 12:54:04

标签: docker

这是一个完整的Docker新手问题。我有一个.sh文件,我想调用docker run两次。但是只有第一个docker run执行,为什么?

mvn clean package docker:build -DskipTests
docker run -e "SPRING_PROFILES_ACTIVE=profile1" -p 8080:8080 -ti something/myapp
docker run -e "SPRING_PROFILES_ACTIVE=profile2" -p 8181:8181 -ti something/myapp

2 个答案:

答案 0 :(得分:3)

原因是您使用-it运行容器。这指示Docker分配连接到容器的stdin的伪TTY,并在容器中创建交互式bash shell。因此,当您运行第一个容器时,交互式shell会阻止第二个容器的执行。

尝试将-it替换为-d,它以分离模式运行容器。请参阅此guide

docker run -e "SPRING_PROFILES_ACTIVE=profile1" -p 8080:8080 -d something/myapp
docker run -e "SPRING_PROFILES_ACTIVE=profile2" -p 8181:8181 -d something/myapp

答案 1 :(得分:0)

尝试添加-d以分离模式运行容器:

docker run -e "SPRING_PROFILES_ACTIVE=profile1" -p 8080:8080 -d -ti something/myapp
docker run -e "SPRING_PROFILES_ACTIVE=profile2" -p 8181:8181 -d -ti something/myapp