2017-02-23 106 views
0

隨着新功能'networking'發佈(link),Docker'link'功能將被棄用。我正在用一些容器做docker-compose,用'link'來連接其他的(沒有任何其他命令)就沒問題了。Docker-compose網絡鏈接

由於我需要將鏈接配置更改爲網絡,因此必須在'docker-compose up'之前創建docker網絡。是否有任何碼頭網絡自動生成功能?或者用任何其他方式來連接每個容器與一些配置?

回答

1

默認情況下,使用v2 yml編寫docker-compose將啓動項目的網絡。除非您明確指出,否則您所定義的任何網絡也將被創建。這裏有一個例子泊塢窗,compose.yml:

version: '2' 

networks: 
    dbnet: 
    appnet: 

services: 
    db: 
    image: busybox 
    command: tail -f /dev/null 
    networks: 
    - dbnet 

    app: 
    image: busybox 
    command: tail -f /dev/null 
    networks: 
    - dbnet 
    - appnet 

    proxy: 
    image: busybox 
    command: tail -f /dev/null 
    ports: 
    - 80 
    networks: 
    - appnet 

然後當你旋轉它,你會看到它創建的網絡定義:

$ docker-compose up -d 
Creating network "test_dbnet" with the default driver 
Creating network "test_appnet" with the default driver 
Creating test_app_1 
Creating test_db_1 
Creating test_proxy_1 

請注意,關聯容器還創建了一個隱含的依賴關係,因此您可能希望在您的yml中使用depends_on,以便在刪除鏈接後在任何依賴項中進行顯式指定。

+0

它實際上是我想要的。謝謝 :) –

3

docker-compose爲自己的撰寫項目創建一個默認網絡。您只需將撰寫項目遷移至構成yaml格式的version: '2'version: '3'即可。請閱讀how to upgrade瞭解更多信息。

對於版本2和3,您不必指定鏈接,因爲如果未明確指定其他網絡,則所有服務都將位於默認網絡中。

UPDATE:要使2個容器相互通信,您可以簡單地使用將解析爲容器IP的服務名稱。現在只需要鏈接,如果由於某種原因容器需要一個特定的名字,例如因爲它是硬編碼的。

+0

那麼如何將容器連接到容器?我需要將db容器連接到tomcat容器。我將在docker-compose中使用「鏈接」,如果它不會被棄用。 –

+0

我更新了答案,以回答您評論中的問題。在這種情況下,tomcat可以簡單地使用「db」(假設服務名爲db) –