docker如何为链接IP创建别名

docker如何为链接IP创建别名,docker,kubernetes,ip,docker-compose,alias,Docker,Kubernetes,Ip,Docker Compose,Alias,运行docker compose时,所有容器的网络别名与网络中运行的其他容器的ip相同。 这些别名是如何创建的 我需要在Kubernetes集群内的nginx容器中重新创建一个别名,因为nginx conf不允许环境变量,我从那里将代理请求反向到另一个容器。 我通常会编辑/etc/hosts文件,但由于docker compose没有编辑,我想知道别名是如何创建的,我是否可以在kubernetes集群中以相同的方式进行编辑。如 链接服务的容器可以通过与别名相同的主机名访问,如果未指定别名,则可以

运行docker compose时,所有容器的网络别名与网络中运行的其他容器的ip相同。 这些别名是如何创建的

我需要在Kubernetes集群内的nginx容器中重新创建一个别名,因为nginx conf不允许环境变量,我从那里将代理请求反向到另一个容器。 我通常会编辑/etc/hosts文件,但由于docker compose没有编辑,我想知道别名是如何创建的,我是否可以在kubernetes集群中以相同的方式进行编辑。

链接服务的容器可以通过与别名相同的主机名访问,如果未指定别名,则可以通过与服务名称相同的主机名访问

这意味着如果您有这样的docker compose文件:

version: '3'
services:
  nginx:
     links:
       - app1
     ...
  app1:
    ...

然后nginx可以通过
app1

访问另一个容器。在kubernetes集群中,默认情况下部署了DNS服务器服务

kubectl get svc
应显示DNS服务IP地址

您也可以在容器
/etc/resolv.conf
文件中找到DNS服务器IP地址

有关更多信息,请参阅

您可以使用主机别名在容器的
/etc/hosts
文件中指定其他条目。看

剪报:


你误解了我的问题。我问docker compose是如何在后面使用别名的。我的本地docker compose网络工作正常,但它有点神奇,很难在kubernetes上复制…谢谢,看起来就像我需要做的,我们也可以在部署规范中设置主机别名。现在想知道如何用到相关容器服务ip的链接替换硬编码ip。具体地说,我希望我的nginx容器从nginx.conf访问php fpm服务(名称stg phpfpm svc),作为
php
,以进行反向代理。也许我需要做一些其他的事情,比如在服务上进行dnsalising…您应该能够使用服务发现。这就是k8s集群中不同服务的通信方式。
apiVersion: v1
kind: Pod
metadata:
  name: hostaliases-pod
spec:
  restartPolicy: Never
  hostAliases:
  - ip: "127.0.0.1"
    hostnames:
    - "foo.local"
    - "bar.local"
  - ip: "10.1.2.3"
    hostnames:
    - "foo.remote"
    - "bar.remote"