2016-02-29 63 views
2

我正在使用bash腳本啓動一個帶有兩個碼頭集裝箱的虛擬網絡。這感覺是史前的。是否有一些工具可以旋轉這樣一個整體上下&顯示其當前狀態,還是必須自己照顧?管理一組沒有汗水的碼頭集裝箱

docker-compose如果docker文檔中docker-compose是自包含的還是與swarm綁定的,並且組合定義文件的權威示例以及啓動和停止集合的命令將非常有用,這是不清楚的。

E.g.這裏是一個bash腳本將會做什麼來定義/啓動兩個相互關聯的容器的應用程序,不用說這個腳本不能幫助管理其生命週期,而不僅僅是啓動一次。

docker network create --driver bridge FooAppNet 
docker run --rm --net=FooAppNet --name=component1 -p 9000:9000 component1-image 
docker run --rm --net=FooAppNet --name=component2 component2-image 
在這個例子中

此外,容器component1暴露端口9000到主機,並且其包含的應用程序具有它在它的配置文件硬連線,以消耗由它的名字的component2服務(以下共同搬運工聯網實踐依靠在docker networks' internal DNS)。

+1

可能最好從Docker Compose開始。你可以獨立於Swarm使用它。 –

回答

3

對於你給的例子,下面的泊塢撰寫文件會給你想要的東西:

component1: 
    image: component1-image 
    net: FooAppNet 
    container_name: component1 
    ports: 
    - "9000:9000" 
component2: 
    image: component2-image 
    net: FooAppNet 
    container_name: component2 

如果這些信息存儲在一個docker-compose.yml文件,然後運行docker-compose up -d它將創建/啓動/重新啓動您的容器並將它們分配給您的網絡。

-d標誌以分離模式運行容器,並防止在啓動容器時將日誌輸出打印到終端窗口。您仍然可以通過docker logs -f ...與其他任何容器一樣獲得日誌。

然後,您可以使用docker-compose downdocker-compose restart等來控制集合的生命週期。順便說一下,using variables可以使定義文件變得更加靈活。

請參閱以下有關使用由docker撰寫自動啓動的網絡的評論。

+0

單獨運行'docker network create --driver bridge'使它成爲一切,好吧,不是獨立的。 (雙關語意)。還發布了關於後者的關鍵部分[現在是一個單獨的問題](http://stackoverflow.com/questions/35708873/how-do-you-define-a-network-in-a-version-2-docker-compose -definition文件)。 – matanster

+0

爲了享受通過撰寫爲項目創建的默認網絡,還需要從配置中刪除上面的'net:'行。總之,請看這裏 - https://docs.docker.com/compose/networking/ – matanster