架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1280|回复: 2

Docker 基于 Windows 系统构建镜像

[复制链接]
发表于 2023-6-2 21:18:24 | 显示全部楼层 |阅读模式
需求:有些老的项目需要在 Windows 上面运行,或者项目需要调用一些 com 组件执行获取结果,这时候,我们只能基于 Windows 构建镜像,并且运行基于 Windows 系统的容器。

关于 Windows 容器微软官方文档介绍:https://learn.microsoft.com/zh-cn/virtualization/windowscontainers/about/

Windows 基础镜像

Microsoft 提供多个映像(称为基础映像),你可以从其着手构建自己的容器映像:

  • Windows - 包含整套 Windows API 和系统服务(服务器角色除外)。
  • Windows Server - 包含整套 Windows API 和系统服务。
  • Windows Server Core - 一个较小的映像,包含部分 Windows Server API - 即完整的 .NET Framework。 它还包括大多数(但不是所有)服务器角色,例如不包含传真服务器。
  • Nano Server - 最小的 Windows Server 映像,包括支持 .NET Core API 和某些服务器角色。


后缀名称为 insider 的镜像为内部版本,其实也就是预览版

请记住,Windows 容器基础映像分为两层:RTM 层和补丁层,其中包含覆盖在 RTM 层上的 OS 库和二进制文件的最新安全修复程序。 补丁层大小在容器映像支持周期的整个生存期内波动,根据二进制文件中变化的增量逐月增长或缩小。 在新主机上拉取 Windows 容器基础映像时,必须同时拉取两个层。

容器基础映像介绍:https://learn.microsoft.com/zh-cn/virtualization/windowscontainers/manage-containers/container-base-images
镜像 Hub 地址:https://hub.docker.com/_/microsoft-windows-base-os-images

操作系统要求

列出了对 Windows 容器宿主机的要求,如下:

  • Windows 容器功能在 Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows 10 专业版和企业版(版本 1607 及更高版本)以及 Windows 11 专业版和企业版中可用。
  • 在运行 Hyper-V 隔离操作之前必须安装 Hyper-V 角色。
  • Windows Server 容器主机必须将 Windows 安装到 c:。 如果仅部署 Hyper-V 隔离容器,则没有此限制。


Windows 11 安装 Docker Desktop

下载地址:https://docs.docker.com/desktop/install/windows-install/

安装完成后,将默认容器类型设置为 Windows 容器。 若要在安装完成后进行切换,可以在 Windows 系统任务栏中使用 Docker 项,如下图:

QQ截图20230602203832.jpg QQ截图20230602203855.jpg

Containers feature is disabled. Enable it using the PowerShell script (in an administrative PowerShell) and restart your computer before using Docker Desktop:

Enable-WindowsOptionalFeature -Online -FeatureName $("Microsoft-Hyper-V", "Containers") -All
QQ截图20230602204100.jpg

如果遇到以上错误,请以管理员身份运行 Window Terminal(Windows PowerShell),命令如下:

执行完后,需要重启电脑。然后重新将类型设置为 Windows 容器,切换成功后,如下图:

QQ截图20230602204755.jpg

Dockerfile 构建镜像

新建一个 Dockerfile 文件,内容如下:

更多 Dockerfile 示例请参考:https://github.com/MicrosoftDocs/Virtualization-Documentation/tree/main/windows-container-samples

构建新的镜像,命令如下:

QQ截图20230602210023.jpg QQ截图20230602211113.jpg

运行容器

最后,根据镜像创建一个容器,命令如下:

尝试使用浏览器访问:http://127.0.0.1:5006/,如下图:

QQ截图20230602211729.jpg

成功访问容器内的 IIS 默认站点。

(完)





上一篇:.NET/C# RSA 之 PEM 格式加密解密
下一篇:ASP.NET Core(二十)预防开放式重定向攻击
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2023-6-2 21:19:28 | 显示全部楼层
回顾

Docker 基于 draw.io 搭建在线思维导图
https://www.itsvse.com/thread-10597-1-1.html

【实战】使用 Docker 搭建 Gitlab 私有仓库
https://www.itsvse.com/thread-10408-1-1.html

【实战】禁止 Docker 容器访问互联网(外网)
https://www.itsvse.com/thread-10401-1-1.html

【实战】Docker 使用 Macvlan 给容器设置独立 IP 地址
https://www.itsvse.com/thread-10389-1-1.html

【实战】搭建家庭媒体 Docker 之迅雷下载、DLNA 服务
https://www.itsvse.com/thread-10377-1-1.html

【实战】Docker 修改和限制容器CPU、内存等资源
https://www.itsvse.com/thread-10344-1-1.html

【实战】使用 Docker 搭建 DNS 服务(dnsmasq)
https://www.itsvse.com/thread-10321-1-1.html

【实战】使用 Docker 搭建 IPsec VPN 服务器
https://www.itsvse.com/thread-10274-1-1.html

【实战】Docker 日志占满磁盘和数据迁移
https://www.itsvse.com/thread-10247-1-1.html

【实战】使用 cAdvisor 收集 Docker 容器指标
https://www.itsvse.com/thread-10243-1-1.html

【实战】在 Docker 上面部署 SQL Server 2019 数据库
https://www.itsvse.com/thread-10186-1-1.html

【实战】使用 Docker 安装部署 Discuz 论坛
https://www.itsvse.com/thread-10181-1-1.html

【实战】基于 Docker php:5.6.40-fpm 镜像安装 Redis 扩展
https://www.itsvse.com/thread-10176-1-1.html

【实战】基于 Docker php:5.6.40-fpm 镜像安装 GD 扩展
https://www.itsvse.com/thread-10175-1-1.html

Docker 的 save 和 export 命令的区别
https://www.itsvse.com/thread-10174-1-1.html

基于 Debian(docker 镜像)安装 curl
https://www.itsvse.com/thread-10155-1-1.html

【实战】使用 Docker 部署 Elasticsearch 服务
https://www.itsvse.com/thread-10148-1-1.html

Docker POI 报错异常解决方案
https://www.itsvse.com/thread-10145-1-1.html

【转】Docker volume 挂载时文件或文件夹不存在
https://www.itsvse.com/thread-10144-1-1.html

Docker 查看容器 restart 设置和批量停止容器
https://www.itsvse.com/thread-10130-1-1.html

【实战】Docker 之将 war 应用部署到 Tomcat 容器
https://www.itsvse.com/thread-10125-1-1.html

【实战】CentOS 8 安装 Docker 包冲突问题
https://www.itsvse.com/thread-10115-1-1.html

docker 如何删除 none 镜像
https://www.itsvse.com/thread-10112-1-1.html

Docker MySQL 解决  Too many connections 问题
https://www.itsvse.com/thread-10102-1-1.html

推荐两款分析 Docker 镜像层的工具
https://www.itsvse.com/thread-10063-1-1.html

Linux 之 Overlay 文件系统在 Docker 中的应用
https://www.itsvse.com/thread-10061-1-1.html

【实战】Docker 安装 Redis 可视化管理工具(redis-manager)
https://www.itsvse.com/thread-10015-1-1.html

【实战】CentOS 7 安装 Docker 容器
https://www.itsvse.com/thread-9999-1-1.html

【实战】Docker 搭建 SFTP 服务
https://www.itsvse.com/thread-9994-1-1.html

Docker Hub 设置国内镜像加速
https://www.itsvse.com/thread-9738-1-1.html

使用 Docker 部署 Jaeger 分布式链路追踪教程
https://www.itsvse.com/thread-9526-1-1.html

Docker 仓库(三)将 ASP.NET Core 镜像推送到 Harbor 仓库
https://www.itsvse.com/thread-9478-1-1.html

Docker 仓库(二)Harbor 设置开机启动
https://www.itsvse.com/thread-9475-1-1.html

Docker 仓库(一)基于 Harbor 搭建私有仓库
https://www.itsvse.com/thread-9474-1-1.html

docker-ce-3:19.03.13-3.el7.x86_64 requires containerd.io >= 1.2.2-3
https://www.itsvse.com/thread-9449-1-1.html

Docker 安装运行 Redis 缓存
https://www.itsvse.com/thread-8995-1-1.html

docker container 容器访问外部宿主机服务
https://www.itsvse.com/thread-8969-1-1.html

在Docker构建的容器中安装ping工具
https://www.itsvse.com/thread-8966-1-1.html

Docker 升级到最新版本
https://www.itsvse.com/thread-8932-1-1.html

docker 在 windows 系统下存储镜像位置
https://www.itsvse.com/thread-8922-1-1.html

dockerfile 与 docker-compose的区别
https://www.itsvse.com/thread-8921-1-1.html

Docker 时间不一致,容器时间时区设置
https://www.itsvse.com/thread-8865-1-1.html

docker ps报错bash: ps: command not found
https://www.itsvse.com/thread-8864-1-1.html

.Net Core 中 DateTime 时间在Linux Docker中与Windows时间不一致
https://www.itsvse.com/thread-8862-1-1.html

【实战】基于 Nginx 制作 Docker 镜像
https://www.itsvse.com/thread-8800-1-1.html

Docker搭建私有镜像仓库
https://www.itsvse.com/thread-8389-1-1.html

未启用卷共享。请启用用于 Windows 的 Docker CE 设置中的卷共...
https://www.itsvse.com/thread-7544-1-1.html

centos解决docker端口映射到宿主机后外网无法访问的问题
https://www.itsvse.com/thread-6959-1-1.html

docker run的--rm选项详解
https://www.itsvse.com/thread-6957-1-1.html

【实战】Docker部署kong-dashboard教程
https://www.itsvse.com/thread-5684-1-1.html


【实战】CentOS 7 Docker部署PostgreSQL 9.6
https://www.itsvse.com/thread-5683-1-1.html

修改docker容器端口映射的方法
https://www.itsvse.com/thread-5177-1-1.html

Centos 7下使用docker部署rap2教程
https://www.itsvse.com/thread-5166-1-1.html

centos 安装Docker Compose教程
https://www.itsvse.com/thread-5164-1-1.html

Docker容器和主机如何互相拷贝传输文件
https://www.itsvse.com/thread-5121-1-1.html

Docker 创建一个Nginx容器
https://www.itsvse.com/thread-5119-1-1.html

Docker 容器设置固定IP教程
https://www.itsvse.com/thread-5116-1-1.html

如何获取 docker 容器(container)的 ip 地址
https://www.itsvse.com/thread-5115-1-1.html

docker容器中查看容器linux版本
https://www.itsvse.com/thread-5114-1-1.html

八个Docker的真实应用场景
https://www.itsvse.com/thread-5015-1-1.html

Centos7 Docker的安装配置实战
https://www.itsvse.com/thread-5014-1-1.html

Docker版本分为CE和EE区别
https://www.itsvse.com/thread-5013-1-1.html
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2023-6-3 09:22:24 | 显示全部楼层
进入到容器查看内部信息


QQ截图20230603091854.jpg QQ截图20230603091904.jpg QQ截图20230603092158.jpg
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-24 19:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表