欢迎回到Docker Bootcamp。到目前为止,我们经历的所有示例都使用了Linux容器。在这篇文章中,我们将切换到Windows容器。您学到的所有Docker命令仍然可以正常工作。但是现在,我们将可以访问Windows,PowerShell和Internet信息服务(IIS)来运行基于.NET的应用程序。
例子
切换到Windows容器
- 启用可选的Windows功能
- 作为管理用户打开一个powershell窗口
- 启用windowsoptionalfeature -Online -featurename $(“ Microsoft -hyper -v”,“容器”) - all
- 重新启动计算机
- 检查当前的容器设置
- Docker信息
- 请注意,当前将行ostype设置为Linux
- Docker信息
- 使用Dockercli切换容器引擎
- ‘c:\ program文件\ docker \ docker \ dockercli.exe’-switchwindowsengine
- 验证新容器设置
- Docker信息
- 请注意,现在将行ostype设置为Windows
- Docker信息
运行Windows容器
- 从Docker注册表中获取图像
- Docker Pull mcr.microsoft.com/windows/servercore/iis
- 创建并启动一个独立的容器,并将暴露于特定主机端口的映射端口映射
- Docker Run -D -P 8080:80 - 名称默认设备MCR.Microsoft.com/windows/servercore/iis
- 查看默认网站
- 浏览到Localhost:8080
- 注意默认IIS网站加载
- 浏览到Localhost:8080
连接powershell终端
- 执行命令以启动交互式PowerShell终端
- docker exec - it默认设施powershell.exe
现在,您可以访问完整的PowerShell终端,用于导航文件系统并管理容器。您也可以通过执行cmd.exe而不是powershell.exe连接到命令提示符。如前所述,Docker不支持Guis。如果您尝试执行Explorer.exe,您将遇到错误。
附加音量
- 在主机上创建一个文件夹以用作wwwroot卷
\ wwwroot
- 在主机wwwroot文件夹中创建一个index.html文件
- 编辑文件并添加基本Hello World HTML
- 创建并启动一个独立的容器,附加一个音量,然后将暴露于指定的主机端口映射
- docker run -d -v <文件夹> \ wwwroot:c:\ inetpub \ wwwroot -p 8181:80 - 名称customsite mcr.microsoft.com/windows/servercore/servercore/iis
- 查看自定义网站
- 浏览到Localhost:8181
- 注意您会获得访问拒绝错误
- 浏览到Localhost:8181
- 更改主机wwwroot文件夹的权限
- 在文件资源管理器中,右键单击wwwroot文件夹 - >属性
- 在“安全性”选项卡上,单击编辑以更改权限
- 添加“每个人”用户
- 授予所有人用户阅读许可
- 查看自定义网站
- 浏览到Localhost:8181
- 查看您创建的基本Hello World HTML
- 浏览到Localhost:8181
该示例突出显示了容器和固定载量的安全问题之一。该应用程序以与主机计算机不同的用户在容器内运行。主机安全设置仍然适用于共享卷。查看主机和容器的用户名
- 查看您的用户名
- 我是谁
- 您应该查看您的Machinename \ yousername
- 我的是桌面prft \ eric.sanner
- 我是谁
- 执行命令以启动交互式PowerShell终端
- docker exec -it CustomSite PowerShell.exe
- 在容器中查看用户名
- 我是谁
- 您应该看到容器用户的名称
- 我的是Usermanager \ ContainerAdministrator
- 我是谁
用户容器管理员无法访问主机文件夹的内容。添加所有人的权限迅速解决了问题。在生产环境中,在容器内创建特定用户并将该用户权限授予主机文件夹将更加安全。
如您所见,我们到目前为止使用Linux容器所学到的一切都适用于Windows容器。随意应用以前的主题例如环境变量,网络类型,用户定义的网络,主机名和Windows容器的资源限制。