docker - 容器在 Windows Docker 工具箱中的本地主机上不可用
问题描述
我尝试连接到我的容器,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 映像位于私有注册表中,所以我执行了以下步骤:
PATH=$PATH:"C:\Program Files\Oracle\VirtualBox"; export PATH
export DOCKER_HOST="tcp://127.0.0.1:2376"
docker-machine stop default
VBoxManage modifyvm "default" --natpf1 "docker,tcp,,2376,,2376"
docker-machine start default
alias docker='docker --tlsverify=false'
你能帮忙吗?
解决方案
当您使用 Docker Toolbox 时,运行docker run -p 80:80
可能会产生误导。这意味着它会将容器的 80 端口转发到 Docker 机器的端口 80,而不是 Windows 主机!
如果要通过 Windows 主机访问容器,还需要将 Docker 机器的 80 端口转发到该主机。
我看到您正在使用 VirtualBox,它允许您通过在Settings > Network > Advanced > Port Forwarding添加一个条目来做到这一点。
带图片的示例教程:https ://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/
推荐阅读
- javascript - 如何在javascript中制作递归嵌套数组?
- python - 从表中提取所有页面
- python - 是否可以在 python3 中完全使用 Monkey Patch 内置`str`
- powershell - PowerShell 中的 Switch 语句和复制粘贴采用最后一个数组输出,而不是第一个示例
- java - DatePickerCellEditor() 有什么问题?
- java - Random.nextInt 从一本书看来是错误的
- express - Express.js - 如何为搜索过滤器调用多个参数?
- angular - 可观察检查是否正在加载?
- r - 合并从文件名添加日期信息的数据框
- html - 消除
...
带有 shell 命令的块