tutum - docker:hosts 文件未按照链接更新

tutum - docker:hosts 文件未按照链接更新

我正在使用 tutum 部署涉及 web 和 db 组件的应用程序。以下是 tutum.yml 文件的相关部分。

db:
  image: 'postgres:latest'
  ports:
    - '5432:5432'
  restart: always
  volumes_from:
    - data
web:
  image: 'rchamarthi/djangoweb:latest'
  command: 'bash -c ''python manage.py makemigrations && python manage.py migrate && /usr/local/bin/gunicorn django_project.wsgi:application -w 2 -b :8000'''
  expose:
    - '8000'
  links:
    - db
  restart: always
  volumes:
    - /usr/src/app/static
  working_dir: /usr/src/app/

由于 web 有一个到 DB 的链接,我期望“db”主机详细信息被添加到 web 容器的 /etc/hosts 文件中,但我没有看到任何内容。

在 Web 容器中

# cat /etc/hosts                                                                
172.17.0.50     web-1                                                           
127.0.0.1       localhost                                                       
::1     localhost ip6-localhost ip6-loopback                                    
fe00::0 ip6-localnet                                                            
ff00::0 ip6-mcastprefix                                                         
ff02::1 ip6-allnodes                                                            
ff02::2 ip6-allrouters 

在 DB 容器中

# cat /etc/hosts                                                                
172.17.0.49     db-1                                                            
127.0.0.1       localhost                                                       
::1     localhost ip6-localhost ip6-loopback                                    
fe00::0 ip6-localnet                                                            
ff00::0 ip6-mcastprefix                                                         
ff02::1 ip6-allnodes                                                            
ff02::2 ip6-allrouters  

因此,来自 Web 容器的数据库连接失败。

答案1

根据https://support.tutum.co/support/solutions/articles/5000012181-service-links, “Tutum 维护一个 DNS 服务,所有容器都会自动使用该服务来解析主机名,如本文档所述”。据推测,这是为了替代 hosts 文件安排,因为这可能使 tutum 更难动态操作。也就是说,DNS 可以在一个中心点更新,而无需重新启动所有引用它的容器。

您还可以使用环境变量来定位链接的服务,但请注意http://docs.docker.com/userguide/dockerlinks/建议不要依赖这些来在容器重启时进行更新。

相关内容