发展

Docker Bootcamp - Windows容器

Windows 10 S壁纸800x450

欢迎回到Docker Bootcamp。到目前为止,我们经历的所有示例都使用了Linux容器。在这篇文章中,我们将切换到Windows容器。您学到的所有Docker命令仍然可以正常工作。但是现在,我们将可以访问Windows,PowerShell和Internet信息服务(IIS)来运行基于.NET的应用程序。

例子

切换到Windows容器

  • 启用可选的Windows功能
    • 作为管理用户打开一个powershell窗口
    • 启用windowsoptionalfeature -Online -featurename $(“ Microsoft -hyper -v”,“容器”) - all
    • 重新启动计算机
  • 检查当前的容器设置
    • Docker信息
      • 请注意,当前将行ostype设置为Linux
  • 使用Dockercli切换容器引擎
    • ‘c:\ program文件\ docker \ docker \ dockercli.exe’-switchwindowsengine
  • 验证新容器设置
    • Docker信息
      • 请注意,现在将行ostype设置为Windows

运行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网站加载

连接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
      • 注意您会获得访问拒绝错误
  • 更改主机wwwroot文件夹的权限
    • 在文件资源管理器中,右键单击wwwroot文件夹 - >属性
    • 在“安全性”选项卡上,单击编辑以更改权限
    • 添加“每个人”用户
    • 授予所有人用户阅读许可
  • 查看自定义网站
    • 浏览到Localhost:8181
      • 查看您创建的基本Hello World HTML

该示例突出显示了容器和固定载量的安全问题之一。该应用程序以与主机计算机不同的用户在容器内运行。主机安全设置仍然适用于共享卷。查看主机和容器的用户名

  • 查看您的用户名
    • 我是谁
      • 您应该查看您的Machinename \ yousername
      • 我的是桌面prft \ eric.sanner
  • 执行命令以启动交互式PowerShell终端
    • docker exec -it CustomSite PowerShell.exe
  • 在容器中查看用户名
    • 我是谁
      • 您应该看到容器用户的名称
      • 我的是Usermanager \ ContainerAdministrator

用户容器管理员无法访问主机文件夹的内容。添加所有人的权限迅速解决了问题。在生产环境中,在容器内创建特定用户并将该用户权限授予主机文件夹将更加安全。

如您所见,我们到目前为止使用Linux容器所学到的一切都适用于Windows容器。随意应用以前的主题例如环境变量,网络类型,用户定义的网络,主机名和Windows容器的资源限制。

关于作者

来自作者的更多

发表评论

该站点使用Akismet减少垃圾邮件。了解如何处理您的评论数据

订阅每周博客摘要:

报名
类别