我希望通过运行2个容器作为一个单元,通过Docker运行webapp.
1个容器运行我的Web服务器(Tomcat 7).
另一个容器运行我的数据库(Postgres 9.4).
我可以运行docker-compose up,Docker能够按照我的指定启动我的两个容器docker-compose.yml:
web:
build: .
ports:
- "5000"
links:
- db
db:
image: postgres
Run Code Online (Sandbox Code Playgroud)
我希望能够通过docker-compose up再次运行来启动我的webapp的另一个副本,但这会导致Docker告诉我已经有容器正在运行:
$ docker-compose up -d
Creating composetest_db_1
Creating composetest_web_1
$ docker-compose up -d
composetest_db_1 is up-to-date
composetest_web_1 is up-to-date
Run Code Online (Sandbox Code Playgroud)
通过使用-p选项为新副本提供不同的项目名称,我解决了这个问题:
$ docker-compose -p project1 up -d
...
Successfully built d3268e345f3d
Creating project1_web_1
$ docker-compose -p project2 up -d
...
Successfully built d3268e345f3d
Creating project2_web_1
Run Code Online (Sandbox Code Playgroud)
不幸的是,这为每个副本创建了新图像:
$ docker images
project1_web latest d3268e345f3d 2 hours ago 682 MB
project2_web latest d3268e345f3d 2 hours ago 682 MB
Run Code Online (Sandbox Code Playgroud)
有没有办法使用docker-compose单个图像来启动多容器应用程序的多个实例?
您可以通过指定项目名称(默认为目录名称)来重新使用docker compose模板:
$ docker-compose --project-name inst1 up -d
Creating inst1_web_1
$ docker-compose --project-name inst2 up -d
Creating inst2_web_1
Run Code Online (Sandbox Code Playgroud)
您还可以扩大项目中的容器实例:
$ docker-compose --project-name inst2 scale web=5
Creating and starting 2 ... done
Creating and starting 3 ... done
Creating and starting 4 ... done
Creating and starting 5 ... done
Run Code Online (Sandbox Code Playgroud)
现在应该有6个容器在运行:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5e4ab4cebacf tomcat:8.0 "catalina.sh run" 43 seconds ago Up 42 seconds 0.0.0.0:32772->8080/tcp inst2_web_2
ced61f9ac2db tomcat:8.0 "catalina.sh run" 43 seconds ago Up 42 seconds 0.0.0.0:32773->8080/tcp inst2_web_5
efb1ef13147c tomcat:8.0 "catalina.sh run" 43 seconds ago Up 42 seconds 0.0.0.0:32771->8080/tcp inst2_web_4
58e524da3473 tomcat:8.0 "catalina.sh run" 43 seconds ago Up 42 seconds 0.0.0.0:32770->8080/tcp inst2_web_3
0f58c3c3b0ed tomcat:8.0 "catalina.sh run" 2 minutes ago Up 2 minutes 0.0.0.0:32769->8080/tcp inst2_web_1
377e3e5b03e4 tomcat:8.0 "catalina.sh run" 2 minutes ago Up 2 minutes 0.0.0.0:32768->8080/tcp inst1_web_1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1319 次 |
| 最近记录: |