Docker 为 Windows windows 容器在本地托管的网站无法通过 localhost 访问
Website locally hosted by a Docker for Windows windows container is unavailable via localhost
我正在尝试为 Windows 容器设置一个 Docker,以使用 lite-server 和 Sphinx 构建和托管一个简单的静态网站。我先运行容器。
$ docker run -it -p 8080:8080 -v "$(pwd):C:\src" website
然后启动lite-server。
$ yarn serve
可以从容器的 IP 地址(例如 http://172.26.141.28:8080
)访问该网站,所以我知道 lite-server 正在提供内容,但我无法使用 http://localhost:8080
.[=19 访问内容=]
如何通过 localhost:8080 公开网站?
我的Docker文件如下
FROM microsoft/windowsservercore
ENV chocolateyUseWindowsCompression false
RUN powershell -Command \
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'));
RUN choco install nodejs -y
RUN choco install yarn -y
RUN choco install python3 -y
RUN pip install sphinx
RUN pip install sphinx_rtd_theme
# https://github.com/nodejs/node/issues/8897#issuecomment-319010735
# Workaround for error An unexpected error occurred: "ENOENT: no such file or directory, lstat 'C:\ContainerMappedDirectories'".
RUN mkdir C:\src
RUN powershell Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices' -Name 'S:' -Value '\??\C:\src' -Type String
WORKDIR 'S:\'
EXPOSE 8080
CMD ["powershell"]
lite-server 与
一起启动
"scripts": {
"serve": "light-server -s ./build/html -p 8080"
},
软件:
- Docker 版本 17.06.2-ce,构建 cec0b72
- Windows 10(主机)
- Windows服务器核心(容器)
你的 docker 文件说你在 8080 暴露端口,你在 8091 映射。
尝试运行以下命令,
docker run -it -p 8080:8080 -v "$(pwd):C:\src" website
您应该可以导航到 http://localhost:8080
希望对您有所帮助。
我不知道是否有更新,但截至一年前,这是预期的行为:
containers and their ports are only accessible via the NATed IP address.
参见:https://github.com/docker/for-win/issues/204#issuecomment-258638899。
我正在尝试为 Windows 容器设置一个 Docker,以使用 lite-server 和 Sphinx 构建和托管一个简单的静态网站。我先运行容器。
$ docker run -it -p 8080:8080 -v "$(pwd):C:\src" website
然后启动lite-server。
$ yarn serve
可以从容器的 IP 地址(例如 http://172.26.141.28:8080
)访问该网站,所以我知道 lite-server 正在提供内容,但我无法使用 http://localhost:8080
.[=19 访问内容=]
如何通过 localhost:8080 公开网站?
我的Docker文件如下
FROM microsoft/windowsservercore
ENV chocolateyUseWindowsCompression false
RUN powershell -Command \
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'));
RUN choco install nodejs -y
RUN choco install yarn -y
RUN choco install python3 -y
RUN pip install sphinx
RUN pip install sphinx_rtd_theme
# https://github.com/nodejs/node/issues/8897#issuecomment-319010735
# Workaround for error An unexpected error occurred: "ENOENT: no such file or directory, lstat 'C:\ContainerMappedDirectories'".
RUN mkdir C:\src
RUN powershell Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices' -Name 'S:' -Value '\??\C:\src' -Type String
WORKDIR 'S:\'
EXPOSE 8080
CMD ["powershell"]
lite-server 与
一起启动"scripts": {
"serve": "light-server -s ./build/html -p 8080"
},
软件:
- Docker 版本 17.06.2-ce,构建 cec0b72
- Windows 10(主机)
- Windows服务器核心(容器)
你的 docker 文件说你在 8080 暴露端口,你在 8091 映射。
尝试运行以下命令,
docker run -it -p 8080:8080 -v "$(pwd):C:\src" website
您应该可以导航到 http://localhost:8080
希望对您有所帮助。
我不知道是否有更新,但截至一年前,这是预期的行为:
containers and their ports are only accessible via the NATed IP address.
参见:https://github.com/docker/for-win/issues/204#issuecomment-258638899。