Docker撰写和主机名
问题描述:
我有一个名为“web”和“db”的2个服务(容器)的撰写文件。Docker撰写和主机名
{
"version": "2",
"services": {
"web": {
"image": "nodejs:latest",
"ports": ["80"]
},
"db": {
"image": "mysql:latest",
"ports": ["3306"]
}
}
}
我能够通过使用“db”作为我的数据库的IP从Web容器访问数据库容器。如下所示,在撰写文件中使用“主机名”有什么好处?
{
"version": "2",
"services": {
"web": {
"image": "nodejs:latest",
"hostname": "web",
"ports": ["80"]
},
"db": {
"image": "mysql:latest",
"hostname": "db",
"ports": ["3306"]
}
}
}
答
version '2' of docker-compose syntax中引入了容器间私网自动发现主机的功能。在您只能通过链接别名引用容器之前。还有其他的解决方案来创造发现 - 例如。添加代理或“大使”容器。
话虽这么说,我会看到3个理由使用主机名:
- 发现是基于服务的名称,它并不总是需要一个主机名。
- 可以有一个服务(f.ex. Web服务器)
- ,如果你想保持不同的环境之间的一致的配置,你可以使用主机名来描述应用程序正在使用,而不是依赖于其他服务端点多个主机名名称
另请参见:
- 这些不是容器名称,而是服务名称。 容器名称已生成,但可以使用'container_name'属性进行设置。 –