docker compose使用extra host让容器访问主机服务
December 9, 2021
docker compose 如何访问主机服务 #
docker compose 里面的容器怎么访问主机自身起的服务呢?
20.10.0 版本在 linux 新增 host.docker.internal 支持:
docker run -it --add-host=host.docker.internal:host-gateway alpine cat /etc/hosts
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
172.17.0.1 host.docker.internal # --add-host的作用就是添加了这行到/etc/hosts
172.17.0.3 cb0565ceea26
这个 add-host 的意思是告诉容器,容器对域名 host.docker.internal 的访问都将转发到 host-gateway 去。
也就是容器内部访问这个域名 host.docker.internal 时,就会访问到对应的主机上的 host-gateway 地址。
从而达到容器访问主机上服务的效果。
那么,这个 add-host 怎么用在 compose 上呢?
version: "2.3" # 因为某个bug的存在,只能用version2,不能用version3
services:
tmp:
build:
context: .
extra_hosts: # 配置extra_hosts
- "host:IP"
command: -kIL https://host
tty: true
stdin_open: true