在docker中撰写如何创建到localhost的别名/链接?

时间:2017-04-24 04:17:59

标签: docker docker-compose

在我的docker-compose文件中,需要多个容器才能知道特定容器的主机名,包括此特定容器。

链接不起作用,因为容器无法链接到自身。

基本上,我正在寻找的是一种在docker-compose中将localhost别名的方法。

3 个答案:

答案 0 :(得分:4)

extra_hosts为我做了伎俩。

extra_hosts:       - “主机名:127.0.0.1”

来自docker-compose docs:

  

extra_hosts添加主机名映射。使用与泊坞窗相同的值   client --add-host parameter。

     

extra_hosts:     - “somehost:162.242.195.82”     - “otherhost:50.31.209.229”将在此服务的容器内的/ etc / hosts中创建具有ip地址和主机名的条目,例如:

     

162.242.195.82 somehost   50.31.209.229 otherhost

答案 1 :(得分:4)

您应该避免使用链接。相反,同一个Docker网络上的服务可以通过使用服务名称作为DNS名称来找到彼此。使用它来引用您描述的特定容器,包括它引用自身的时间。

例如,在以下组成的Docker Compose文件中,如果someservice是在端口80上提供服务的Web服务器,anotherservice服务将能够在http://someservice/连接到它,因为他们在一个公共网络上the_net

version: '3'

services:
  someservice:
    image: someserviceimage
    networks:
      - the_net

  anotherservice:
    image: anotherserviceimage
    networks:
      - the_net

networks:
  the_net:

someservice也可以在http://somservice/找到自己。

答案 2 :(得分:1)

我认为正确答案来自

  

别名可以定义为服务的网络声明的一部分。有关详细信息,请参阅aliases in Compose file reference。 - King Chung Huang 4月24日和17日17:18

这是doc

中的示例
version: '2'

services:
  web:
    build: ./web
    networks:
      - new

worker:
  build: ./worker
  networks:
    - legacy

db:
  image: mysql
  networks:
    new:
      aliases:
        - database
  legacy:
    aliases:
      - mysql

networks:
  new:
  legacy:

您可以访问此docker-compose中的db,也可以使用mysql连接此db