Docker编写和主机名

Docker编写和主机名,docker,docker-compose,Docker,Docker Compose,我有一个包含两个名为“web”和“db”的服务(容器)的compose文件 通过使用“db”作为数据库的ip,我可以从web容器访问db容器。在组合文件中使用“主机名”有什么好处,如下所示 { "version": "2", "services": { "web": { "image": "nodejs:latest", "hostname": "web", "ports": ["80"]

我有一个包含两个名为“web”和“db”的服务(容器)的compose文件

通过使用“db”作为数据库的ip,我可以从web容器访问db容器。在组合文件中使用“主机名”有什么好处,如下所示

{
    "version": "2",
    "services": {
        "web": {
            "image": "nodejs:latest",
            "hostname": "web",
            "ports": ["80"]
        },
        "db": {
            "image": "mysql:latest",
            "hostname": "db",
            "ports": ["3306"]
        }
    }
}

介绍了容器间专用网络主机自动发现的功能。以前,您只能通过容器的链接别名引用容器。还有其他创建发现的解决方案,例如添加代理或“大使”容器

也就是说,我将看到使用主机名的3个原因:

  • 发现是基于服务名称的,服务名称并不总是需要是主机名
  • 一个服务中可以有多个主机名(f.ex.web服务器)
  • 如果希望在不同环境之间保持一致的配置,可以使用主机名来描述应用程序正在使用的其他端点,而不是依赖于服务名
顺便说一句:我有一个包含两个名为“web”和“db”的服务(容器)的组合文件这些不是容器名称,而是服务名称。已生成容器名称,但您可以使用
Container\u name
属性进行设置。
{
    "version": "2",
    "services": {
        "web": {
            "image": "nodejs:latest",
            "hostname": "web",
            "ports": ["80"]
        },
        "db": {
            "image": "mysql:latest",
            "hostname": "db",
            "ports": ["3306"]
        }
    }
}