【问题标题】:docker domain/port mapping to localhostdocker 域/端口映射到 localhost
【发布时间】:2019-07-25 20:53:17
【问题描述】:

我正在使用 docker-compose,我的一个容器向主机发出无法访问的 domain.name.com:443(无法更改)请求。 localhost:542 上有一个隧道,该隧道将这个端点保存在主机上。我可以在 docker compose 中以某种方式映射它或使用一些解决方法吗?

一种domain.name.com:443:542,从容器中的domain.name.com:443 请求到达localhost:542

【问题讨论】:

    标签: docker networking docker-compose


    【解决方案1】:

    您可以在容器的 /etc/hosts 文件中添加一个条目,将该域映射到您主机的 IP 地址

    docker run -it --add-host "parent.example.com:192.168.0.2" --network="host" --rm busybox
    

    从容器测试:

    / # 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
    192.168.0.2     parent.example.com
    
    / # wget -q http://parent.example.com:8000 -O -
    
    response from parent.example.com:8000
    

    就我而言,我在运行最小 Web 服务器的主机上进行了测试

     while true ; do { echo -e "HTTP/1.1 200 OK\r\nConnection: Close\r\n\r\n"; echo "response from parent.example.com:8000" ; } | netcat -q 0 -l 8000 ;done
    

    您的映射应该是--add-host "domain.name.com:<your_ip_address>"。 ssh 隧道应该在端口 443,而不是 542 上。

    【讨论】:

    • 谢谢。这确实有效。一开始我认为您建议修改 Dockerfile 以将条目添加到/etc/hostsadd-host 在运行时执行,不需要更改 Dockerfile。对于 docker-sompose 这将是 extra_hosts 选项。不需要主机网络,我使用默认网桥并将其绑定到172.17.0.1
    猜你喜欢
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 2022-10-17
    • 2014-09-01
    • 2020-02-29
    相关资源
    最近更新 更多