Docker 工具箱 - 本地主机不工作
Docker Toolbox - Localhost not working
所以我正在使用 Docker Toolbox,因为我的机器上没有 Hyper-V,因为它不是 Windows 10 pro。一切似乎都正常,但是当我尝试继续浏览器时 0.0.0.0:80
它总是 returns 我:无法访问此站点
但是当我 运行 命令时: docker container ps
我得到以下信息: 0.0.0.0:80->80/tcp
意味着这个地址应该有效。我搜索了 Whosebug 和 github 问题。现在我卡住了。
我错过了什么吗?
谢谢,
马克
编辑:
使用 docker-machine ip default
returns 我 192.168.99.100
。我 运行 在端口 80 上。我仍然得到相同的结果,只是地址变成了容器 ID:https://fd677edg12
我 运行 在 cmd 上使用该命令查找我的 ipv4:cmd /k ipconfig /all
。将结果与端口放在一起 returns 同样的事情:https://fd677edg12
Docker Toolbox 在 Windows 中没有 Docker 方便,但您使用它是正确的,因为您使用的是家庭版。
在 Toolbox 中,没有任何东西会 localhost
,默认情况下会 192.168.99.100
,因为它 运行在 VirtualBox 中安装了一个 Linux 虚拟机。
所以如果你 运行 docker run -p 80:80 nginx
(注意我必须为 192.168.99.100
发布一个端口来监听那个端口)
然后去 http://192.168.99.100
应该可以。
我最初在使用 DockerToolBox 和 OracleVM VirtualBox 时在 localhost:8080 访问我的应用程序时遇到了一些问题。
在 VirtualBox 中:
- 单击相应的机器(可能是标有 "default" 的机器)
- 设置
- 网络 > 适配器 1 > 高级 > 端口转发
- 点击“+”添加新规则
- 设置主机端口
8080
和访客端口 8080
;请务必将主机 IP 和来宾 IP 留空
运行命令:
docker run -p 8080:8080 ${image_id}
我在 https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell 中关注 docker 的 windows 教程,但在网络浏览器中测试 nginx 时卡在了第 6 步。似乎我遇到了类似的问题,因为我也使用 Windows Home 并且没有 Hyper-V。我的解决方法很简单:
- 检查您的 docker IP 默认值
$ docker-machine ip default
192.168.99.100
进入Oracle虚拟机设置端口转发。确保网络设置为 NAT,并添加端口转发。
Host IP:127.0.0.1,Guest IP:192.168.99.100,端口全部设置为80
like this
再试一次您的浏览器和 运行 http://localhost or http://127.0.0.1(也可以添加端口 80)。它应该 运行.
问题是 nginx IP 应该可以在 docker 虚拟机中访问,因此我们需要该端口转发设置才能直接在主机的浏览器中访问它
您可以按照以下说明使用 localhost
代替“192.168.99.100”:
步骤#01:
docker-machine ip default
您将看到默认 IP
步骤#02:
docker-machine stop default
步骤#03:
- 打开 VirtualBox Manager(从 windows 中的启动程序搜索
VirtualBox Manager
)
- Select 你的 Docker 机器 VirtualBox 图像(例如:默认)
- 打开设置 -> 网络 -> 高级 -> 端口转发
- 添加您的应用程序名称、所需的主机端口和您的来宾端口
i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80
步骤#04:
现在您已准备好通过执行以下命令启动您的 Docker 机器:
docker-machine start default
然后只需启动您的 Docker 容器,您就可以通过本地主机访问它。
Have a look here 了解详情。
要将预期的端口映射到 localhost
而不是直接访问 docker-机器 IP,您可以使用 VirtualBox CLI。
如果docker-machine VM(此处称为default
)是运行,添加和删除规则如下:
> VBoxManage.exe controlvm "default" natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe controlvm "default" natpf1 delete nginx
如果 VM 不是 运行,或者您想在更改它之前停止:
> docker-machine stop
> VBoxManage.exe modifyvm "default" --natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe modifyvm "default" --natpf1 delete "nginx"
> docker-machine start
其中端口转发规则的格式为[<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>
.
请注意,在 VirtualBox 中,您要映射到 Docker 映射的 host 端口,而不是内部容器端口。您正在映射主机 -> 虚拟机,然后 Docker 映射虚拟机 -> 容器。
这是避免输入 ip 192.168.99.100 的另一种简单方法。
转到 C:\Windows\System32\drivers\etc\hosts
并在文件末尾添加:
192.168.99.100 docker.awesome
或您喜欢的任何名称。
保存文件(您需要拥有管理员权限,因此请确保您右键单击该文件并以管理员身份 运行 以便在编辑时能够保存它)。
转到您选择的域名,docker.awesome:8080 在这种情况下,您就可以找到它。
经过多次尝试,我得到了这个公告板。
我用的docker运行命令-docker运行-p4680:8080--name bbbulletinboard:1.0
这里,4680 是本地主机端口号。
8080 是容器端口号,容器将监听的端口。 Dockerfile 中的 EXPOSE 命令中提到了此端口号。
然后,转到网络浏览器并输入 192.168.99.100:4680
这里192.168.99.100是docker机器IP地址(使用命令->docker-机器ip)
- 在此之后,您的浏览器页面应该打开 -
希望对大家有所帮助!!
所以我正在使用 Docker Toolbox,因为我的机器上没有 Hyper-V,因为它不是 Windows 10 pro。一切似乎都正常,但是当我尝试继续浏览器时 0.0.0.0:80
它总是 returns 我:无法访问此站点
但是当我 运行 命令时: docker container ps
我得到以下信息: 0.0.0.0:80->80/tcp
意味着这个地址应该有效。我搜索了 Whosebug 和 github 问题。现在我卡住了。
我错过了什么吗?
谢谢, 马克
编辑:
使用 docker-machine ip default
returns 我 192.168.99.100
。我 运行 在端口 80 上。我仍然得到相同的结果,只是地址变成了容器 ID:https://fd677edg12
我 运行 在 cmd 上使用该命令查找我的 ipv4:cmd /k ipconfig /all
。将结果与端口放在一起 returns 同样的事情:https://fd677edg12
Docker Toolbox 在 Windows 中没有 Docker 方便,但您使用它是正确的,因为您使用的是家庭版。
在 Toolbox 中,没有任何东西会 localhost
,默认情况下会 192.168.99.100
,因为它 运行在 VirtualBox 中安装了一个 Linux 虚拟机。
所以如果你 运行 docker run -p 80:80 nginx
(注意我必须为 192.168.99.100
发布一个端口来监听那个端口)
然后去 http://192.168.99.100
应该可以。
我最初在使用 DockerToolBox 和 OracleVM VirtualBox 时在 localhost:8080 访问我的应用程序时遇到了一些问题。
在 VirtualBox 中:
- 单击相应的机器(可能是标有 "default" 的机器)
- 设置
- 网络 > 适配器 1 > 高级 > 端口转发
- 点击“+”添加新规则
- 设置主机端口
8080
和访客端口8080
;请务必将主机 IP 和来宾 IP 留空
运行命令:
docker run -p 8080:8080 ${image_id}
我在 https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell 中关注 docker 的 windows 教程,但在网络浏览器中测试 nginx 时卡在了第 6 步。似乎我遇到了类似的问题,因为我也使用 Windows Home 并且没有 Hyper-V。我的解决方法很简单:
- 检查您的 docker IP 默认值
$ docker-machine ip default
192.168.99.100
进入Oracle虚拟机设置端口转发。确保网络设置为 NAT,并添加端口转发。 Host IP:127.0.0.1,Guest IP:192.168.99.100,端口全部设置为80 like this
再试一次您的浏览器和 运行 http://localhost or http://127.0.0.1(也可以添加端口 80)。它应该 运行.
问题是 nginx IP 应该可以在 docker 虚拟机中访问,因此我们需要该端口转发设置才能直接在主机的浏览器中访问它
您可以按照以下说明使用 localhost
代替“192.168.99.100”:
步骤#01:
docker-machine ip default
您将看到默认 IP
步骤#02:
docker-machine stop default
步骤#03:
- 打开 VirtualBox Manager(从 windows 中的启动程序搜索
VirtualBox Manager
) - Select 你的 Docker 机器 VirtualBox 图像(例如:默认)
- 打开设置 -> 网络 -> 高级 -> 端口转发
- 添加您的应用程序名称、所需的主机端口和您的来宾端口
i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80
步骤#04: 现在您已准备好通过执行以下命令启动您的 Docker 机器:
docker-machine start default
然后只需启动您的 Docker 容器,您就可以通过本地主机访问它。
Have a look here 了解详情。
要将预期的端口映射到 localhost
而不是直接访问 docker-机器 IP,您可以使用 VirtualBox CLI。
如果docker-machine VM(此处称为default
)是运行,添加和删除规则如下:
> VBoxManage.exe controlvm "default" natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe controlvm "default" natpf1 delete nginx
如果 VM 不是 运行,或者您想在更改它之前停止:
> docker-machine stop
> VBoxManage.exe modifyvm "default" --natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe modifyvm "default" --natpf1 delete "nginx"
> docker-machine start
其中端口转发规则的格式为[<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>
.
请注意,在 VirtualBox 中,您要映射到 Docker 映射的 host 端口,而不是内部容器端口。您正在映射主机 -> 虚拟机,然后 Docker 映射虚拟机 -> 容器。
这是避免输入 ip 192.168.99.100 的另一种简单方法。
转到 C:\Windows\System32\drivers\etc\hosts
并在文件末尾添加:
192.168.99.100 docker.awesome
或您喜欢的任何名称。
保存文件(您需要拥有管理员权限,因此请确保您右键单击该文件并以管理员身份 运行 以便在编辑时能够保存它)。
转到您选择的域名,docker.awesome:8080 在这种情况下,您就可以找到它。
经过多次尝试,我得到了这个公告板。
我用的docker运行命令-docker运行-p4680:8080--name bbbulletinboard:1.0 这里,4680 是本地主机端口号。 8080 是容器端口号,容器将监听的端口。 Dockerfile 中的 EXPOSE 命令中提到了此端口号。
然后,转到网络浏览器并输入 192.168.99.100:4680
这里192.168.99.100是docker机器IP地址(使用命令->docker-机器ip)
- 在此之后,您的浏览器页面应该打开 -
希望对大家有所帮助!!