Docker-compose网络链接

问题描述:

随着新功能'networking'发布(link),Docker'link'功能将被弃用。我正在用一些容器做docker-compose,用'link'来连接其他的(没有任何其他命令)就没问题了。Docker-compose网络链接

由于我需要将链接配置更改为网络,因此必须在'docker-compose up'之前创建docker网络。是否有任何码头网络自动生成功能?或者用任何其他方式来连接每个容器与一些配置?

默认情况下,使用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

它实际上是我想要的。谢谢 :) –

docker-compose为自己的撰写项目创建一个默认网络。您只需将撰写项目迁移至构成yaml格式的version: '2'version: '3'即可。请阅读how to upgrade了解更多信息。

对于版本2和3,您不必指定链接,因为如果未明确指定其他网络,则所有服务都将位于默认网络中。

UPDATE:要使2个容器相互通信,您可以简单地使用将解析为容器IP的服务名称。现在只需要链接,如果由于某种原因容器需要一个特定的名字,例如因为它是硬编码的。

+0

那么如何将容器连接到容器?我需要将db容器连接到tomcat容器。我将在docker-compose中使用“链接”,如果它不会被弃用。 –

+0

我更新了答案,以回答您评论中的问题。在这种情况下,tomcat可以简单地使用“db”(假设服务名为db) –