Windows版本:Windows Server 2016
Docker for Windows版本:18.09.0
我尝试按照https://docs.microsoft.com/en-us/virtualization/windowscontainers/quick-start/quick-start-images
中的步骤进行操作我在c:\ Build上有一个Docker文件:
html {
margin:0;
height:100%;
padding:0;
}
body {
height:100%;
margin:0;
padding:0;
font-size:16px;
}
.first-panel {
background: black;
width:250px;
height:100vh;
color:white;
position:fixed;
left:0;
clear:both;
top:0
}
.no-user-select {
-webkit-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none
}
@media only screen and (min-width:480px) {
}
@media only screen and (min-width:640px) {
}
@media only screen and (min-width:768px) {
}
@media only screen and (min-width:1024px) {
.first-panel {
background: white;
color:black;
}
}
@media only screen and (min-width:1280px) {
}
请注意,我也尝试过使用FROM microsoft/iis
RUN echo "Hello World - Dockerfile" > c:\inetpub\wwwroot\index.html
因此,我使用具有管理员特权的powershell运行:
FROM microsoft/iis:10.0.14393.206
然后我跑了:
docker build -t imagename c:\Build
上述所有步骤都可以,但我无法访问该网站,
我尝试了每种组合,例如: 来自ipconfig:8000或80的IP地址;检查的IP地址:8000/80。 请注意,我也将防火墙设置为也允许端口8000
但这一切都失败了。
然后,我去了互联网,发现我确实可以称呼bash。因此,我执行了exec,但是发生了一些奇怪的事情:
我不确定这是否表示容器没有工作? 但是检查和容器ls显示它应该可以工作。
菲 网络:我真的无法从互联网上找到任何解决方案
任何建议都会有所帮助,谢谢
答案 0 :(得分:1)
更新:我使它可以与下面的以下配置以及远程IIS访问一起使用。确保防火墙没有将docker阻止到您的本地IP。此外,在我们的案例中,该应用程序是网站的一部分,因此我们需要使用Webadministration将该应用程序部署为应用程序,以使其正常运行。日志,其他所有内容现在都可以正常运行,我们有一个正在运行的示例。
我也一直在使用docker容器,并且在部署时遇到类似的问题。我使用的是服务器核心映像,因为它上面具有完整的功能,但是我在执行测试时定义了这样的dockerfile来构建映像,因为应用程序似乎无法启动。该应用还不是核心,但将很快迁移到该应用,以缩小工作图像。此示例要注意的另一件事是,即使在我的命令中定义了应用程序池,也不会创建该应用程序池。借助此工具,您可以与iis远程管理工具进行远程连接,并检查docker中到目前为止服务器的设置情况。
##Pull the base image to use
FROM mcr.microsoft.com/windows/servercore/iis
#Enable verbose output in case of errors
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"]
#install all needed features of IIS
RUN Install-WindowsFeature -name Web-Server -IncludeManagementTools ;\
Install-WindowsFeature -name Web-Basic-Auth ;\
Install-WindowsFeature -name Web-Windows-Auth ;\
Install-WindowsFeature -name Web-Net-Ext45 ;\
Install-WindowsFeature -name Web-ISAPI-Ext ;\
Install-WindowsFeature -name Web-ISAPI-Filter ;\
Install-WindowsFeature -name Web-WHC ;\
Install-WindowsFeature NET-Framework-45-ASPNET ; \
Install-WindowsFeature Web-Asp-Net45 ;\
Install-WindowsFeature -Name Web-Mgmt-Service ;\
Install-WindowsFeature -name Web-Mgmt-Tools ;\
Install-WindowsFeature -name Web-Mgmt-Compat ;\
Install-WindowsFeature -name Web-Scripting-Tools ;\
Dism /online /enable-feature /featurename:IIS-ManagementService /all ;\
##Still inside the same run command, enable remote management for IIS on docker
New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\WebManagement\Server -Name EnableRemoteManagement -Value 1 -Force ;\
Get-Service -Name WMSVC | Start-Service ;\
Set-Service –Name WMSVC –StartupType 'Automatic' ;\
##In the same run Command add the user and password for IIS remote management
net user myuser superP@ss123 /ADD ;\
net localgroup administrators myuser /add
COPY . myapp
RUN New-WebAppPool myapp
#The configStore is an application of a website, so add it as such to the service
RUN Import-Module WebAdministration; Get-Module ;\
New-Item 'IIS:Sites\Default Web Site\myapp' -physicalPath 'c:\myapp' -ApplicationPool 'myapp' -type 'Application'
EXPOSE 51329 80
我无法回答的另一个问题是,是否可以在创建时为docker映像分配内存大小,而不仅仅是所有者的标准。
答案 1 :(得分:0)
一个月后,我有另一种方法可以访问容器的IIS ...
如果有人遇到类似问题,我将在此处发布答案
有很大关系区别是:
要在容器中完全安装IIS,请使用以下DockerFile:
(文档中缺少一些步骤,没有下面的Dockerfile中包含以下行,就无法安装wmsvc和IIS管理服务)
FROM microsoft/dotnet-framework:4.6.2
RUN powershell -Command Install-WindowsFeature -name Web-Server -IncludeManagementTools
RUN powershell -Command Add-WindowsFeature web-webserver
RUN powershell -Command Install-WindowsFeature -name Web-Basic-Auth
RUN powershell -Command Install-WindowsFeature -name Web-Windows-Auth
RUN powershell -Command Install-WindowsFeature -name Web-Net-Ext45
RUN powershell -Command Install-WindowsFeature -name Web-Asp-Net45
RUN powershell -Command Install-WindowsFeature -name Web-ISAPI-Ext
RUN powershell -Command Install-WindowsFeature -name Web-ISAPI-Filter
RUN powershell -Command Install-WindowsFeature -name Web-WHC
RUN powershell -Command Install-WindowsFeature -name Web-Mgmt-Tools
RUN powershell -Command Install-WindowsFeature -name Web-Mgmt-Compat
RUN powershell -Command Install-WindowsFeature -name Web-Mgmt-Service
RUN powershell -Command Install-WindowsFeature -name Web-Scripting-Tools
RUN powershell Dism /online /enable-feature /featurename:IIS-ManagementService /all
Docker run
带有-it的图像/ Docker attach
容器
通过键入powershell
运行Get-service
来查看IISadmin,w3svc和wmsvc是否存在。
它将显示wmsvc尚未启动(奇怪的是,即使我在DockerFile中运行sc config wmsvc start=auto
仍然无法正常工作)
net start
服务
使用主机的IIS连接到容器的IIS(类似于上面的链接给出的步骤)
它应该能够从主机连接到容器,现在您已经在容器中成功实现了Web应用程序。
PS。请注意,防火墙可能会阻止远程管理过程