2015-12-14 54 views
0

如果我運行多個容器的docker-compose run,它會創建多個版本的主容器,但它共享鏈接的容器。使docker-compose運行唯一鏈接的容器

有沒有辦法爲每次運行啓動完全獨立的容器堆棧?

現在我有:

$ docker-compose run web & 
$ docker-compose run web & 
$ docker ps 
CONTAINER ID  IMAGE  NAMES 
a579904eca2d  www_web www_web_run_2 
cb8f07ef0ca4  www_web www_web_run_1 
d3f5e6343200  www_db  www_db_1 

但我想有

CONTAINER ID  IMAGE  NAMES 
a579904eca2d  www_web www_web_run_2 
cb8f07ef0ca4  www_web www_web_run_1 
d3f5e6343200  www_db  www_db_1 
d3f5e6343200  www_db  www_db_2 

如果每個Web容器中獲得自己的DB容器。

+0

不確定你的特定場景,但是'docker-composer scale'可能有幫助嗎? –

回答

3

docker-compose二進制幫助給出了一個選項:

-p,--project名name指定的備用項目名稱(默認:目錄名)

你可以這樣做:

docker-compose -p stack1 up -d 
docker-compose -p stack2 up -d 

這將使你:

stack1_web_1 
stack1_db_1 
stack2_web_1 
stack2_db_1 

這將允許您執行諸如docker-compose -p stack1 run web cat /etc/os-release之類的操作來選擇要處理的特定容器。它也應該保留每個堆棧的鏈接。例如,如果您在web服務中有db的鏈接,則stack1_web_1將鏈接到stack1_db_1,並且stack2_web_1將鏈接到stack2_db_1

+0

這現在也在faq中:https://docs.docker.com/compose/faq/#how-do-i-run-multiple-copies-of-a-compose-file-on-the-same -主辦 – dnephin