Docker-compose网络链接

3
Docker的“link”特性将被弃用,因为新特性“网络”已经发布(链接)。我正在使用一些容器创建docker-compose,并且使用“link”连接它们(而不需要任何其他命令),这是可以的。
由于我需要将链接配置更改为网络,因此在“docker-compose up”之前必须先创建docker网络。是否有任何docker-compose特性可以自动创建docker网络? 或者通过某些配置连接每个容器的其他方式?
2个回答

4
docker-compose会在项目中自动创建默认的网络。您只需要将compose项目迁移到version: '2'version: '3'的compose yaml格式即可。详情请阅读如何升级
在版本2和3中,您不再需要指定链接,因为所有服务都将在默认网络中(如果您没有显式指定其他网络)。 更新:要使两个容器之间通信,您可以简单地使用服务名称,该名称将解析为容器IP。仅当某个容器需要特定名称时(例如因为它是硬编码的)才需要链接。

那么如何将容器连接到容器?我需要将数据库容器连接到Tomcat容器。如果它不会被弃用,我将在docker-compose中使用“链接”。 - J.Done
我更新了答案,以回答你评论中的问题。在这种情况下,tomcat 可以简单地使用“db”(假设服务名为 db)。 - Alexander Block

4

默认情况下,使用v2 yml格式的docker-compose会为您的项目启动一个网络。您定义的任何网络也将被创建,除非您明确告诉它不这样做。以下是一个示例docker-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来明确任何依赖关系。

这正是我想要的。谢谢 :) - J.Done

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接