代码之家  ›  专栏  ›  技术社区  ›  Taz jason

容器在Windows Docker工具箱的本地主机上不可用

  •  2
  • Taz jason  · 技术社区  · 7 年前

    我尝试连接到上的容器 localhost/127.0.0.1/0.0.0.0 但网站无法访问。

    细节:

    $ docker run -d -p 80:80 nginx:alpine
    
    $ docker ps
    CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS
                                                                    NAMES
    d5b465ed1b18        nginx:alpine                            "nginx -g 'daemon of"   6 minutes ago       Up 6 minutes        0.0.0.
    0:80->80/tcp                                                   quizzical_swirles
    798b40ceec77        10.36.7.241:5000/facileexplorer:0.3.8   "/usr/bin/supervisor"   9 minutes ago       Up 9 minutes        4444/t
    cp, 0.0.0.0:3838->3838/tcp, 0.0.0.0:8787->8787/tcp, 5900/tcp   vigilant_banach
    

    我遵循这个教诲: https://blog.sixeyed.com/published-ports-on-windows-containers-dont-do-loopback/ :

    $ docker inspect --format '{{ .NetworkSettings.Networks.nat.IPAddress }}' d5b465ed1b18
    <no value>
    

    但它不能返回港口。

    我还帮助自己完成了这个指南: https://www.iancollington.com/docker-and-cisco-anyconnect-vpn/ 因为我的一些Docker映像在私有注册表中,所以我执行了以下步骤:

    1. PATH=$PATH:"C:\Program Files\Oracle\VirtualBox"; export PATH
    2. export DOCKER_HOST="tcp://127.0.0.1:2376"
    3. docker-machine stop default
    4. VBoxManage modifyvm "default" --natpf1 "docker,tcp,,2376,,2376"
    5. docker-machine start default
    6. alias docker='docker --tlsverify=false'

    你能帮忙吗?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Samuel Dion-Girardeau    7 年前

    使用Docker工具箱时,运行 docker run -p 80:80 可能会产生误导。这意味着它将把容器的端口80转发到Docker机器的端口80,而不是Windows主机!

    如果要通过Windows主机访问容器,还需要将Docker计算机的端口80转发到该主机。

    我看到您使用的是virtualbox,它允许您通过在 设置>网络>高级>端口转发 .

    带图像的示例教程: https://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/

    推荐文章