标签: 容器

  • Docker container容器内访问宿主机host服务

    问题:docker的container内,本身是一个微小的主机,那么请求127.0.0.1或者localhost,自然是请求到了container本身的网络,而无法抵达宿主机。

    在以往,需要各位去手动寻找docker创建的docker0 bridge来访问宿主机网络,但在今天,docker已经提供了非常优雅的解决办法了

    Linux:

    Docker版本高于v20.10(2020年12月4日更新)

    在启动docker时,加入如下语句
    --add-host=host.docker.internal:host-gateway
    而在container内,可以直接请求host.docker.internal:PORT,来获取宿主机上提供的各种服务

    如果使用了Docker Compose,则应该将下面的句子加入container的声明中:

    [code language=”css”]
    extra_hosts:
    – "host.docker.internal:host-gateway"
    [/code]

    Mac和Windows:

    Docker版本高于v18.03(2018年3月21日更新)

    直接在container内使用host.docker.internal:PORT来访问宿主机服务即可

    对于Mac上Docker版本低于上述版本的:

    Mac Docker版本v17.12到v18.02: 使用docker.for.mac.host.internal

    Mac Docker版本v17.06到v18.11: 使用docker.for.mac.localhost

    对于更低版本的docker,只能使用老旧的方法了,这里不再多做赘述

    参考:https://stackoverflow.com/a/43541732