添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
性感的小虾米  ·  Help on "ERROR ...·  2 天前    · 
个性的火柴  ·  dbt cloud with ...·  9 小时前    · 
勤奋的手电筒  ·  Docker Execution Mode ...·  9 小时前    · 
重感情的风衣  ·  Goodnotes Windows 版 | ...·  1 月前    · 
非常酷的钥匙扣  ·  hive函数 -- split ...·  11 月前    · 
稳重的皮带  ·  c语言,输入一行字符, ...·  11 月前    · 

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 上呢?

在 build 里使用 extra_hosts

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

docker compose 配置中文说明

参照

测试:

docker-compose --version
docker-compose version 1.29.2, build 5becea4c

新建一个服务,在主机上运行;

package main
import (
        "fmt"
        "net/http"
func main() {
        handler := http.HandlerFunc(func(resp http.ResponseWriter, req *http.Request) {
                fmt.Println("hi")
                resp.Write([]byte("hello"))
        if err := http.ListenAndServe(":8080", handler); err != nil {
                panic(err)

新建 compose,里面也起一个服务,这个服务需要访问上述的主机服务;

version: "2.3" # version改为3.3也可以
services: