新手求助:如何创建含PowerShell相关模块的Azure Docker镜像
嘿,作为Docker和Azure环境的新手,想要打造适配Azure环境的镜像,选对基础镜像+正确安装模块其实没那么复杂,我给你一步步捋清楚:
第一步:选对基础镜像
因为你需要PowerShell 5.1,直接选微软官方的Windows Server Core镜像就最合适——这些镜像天生兼容Azure环境,而且自带PowerShell 5.1,稳定性拉满。推荐选:
mcr.microsoft.com/windows/servercore:ltsc2019:Azure上支持最广泛的长期支持版本,适合大多数场景mcr.microsoft.com/windows/servercore:ltsc2022:更新的版本,如果你需要更现代的系统组件可以选这个
别选Windows Nano Server,它的PowerShell是简化版,没法正常安装ExchangeOnlineManagement模块。
第二步:编写Dockerfile安装所需模块
直接用下面的Dockerfile,每一步我都给你标注了原因:
# 基于Azure兼容的Windows Server Core镜像(自带PS5.1) FROM mcr.microsoft.com/windows/servercore:ltsc2019 # 设置工作目录,方便后续操作 WORKDIR /app # 执行PowerShell命令完成模块安装 RUN powershell -Command \ # 先把执行策略改成RemoteSigned,不然没法安装模块 Set-ExecutionPolicy RemoteSigned -Force; \ # 升级PowerShellGet——默认的PSGet版本太老,可能找不到最新的Exchange模块 Install-Module -Name PowerShellGet -Force -AllowClobber; \ # 刷新模块缓存,确保新的PSGet生效 Import-Module PowerShellGet; \ # 安装ExchangeOnlineManagement模块,Force和AllowClobber用来跳过冲突提示 Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber # 容器启动后默认进入PowerShell界面 CMD ["powershell"]
第三步:构建&测试镜像
- 把上面的内容保存成
Dockerfile(注意文件名没有后缀),放到一个空文件夹里,比如C:\docker\azure-exchange-ps - 打开PowerShell,进入这个文件夹:
cd C:\docker\azure-exchange-ps - 执行构建命令:
docker build -t azure-exchange-ps:v1 .(别漏了最后的点,代表当前目录) - 构建完成后,测试容器:
docker run -it azure-exchange-ps:v1 - 进入容器后,验证模块是否安装成功:
Get-Module -ListAvailable ExchangeOnlineManagement,如果能看到模块的版本信息,就说明搞定了!
一些新手注意事项
- Windows镜像体积普遍偏大(几个G),这是正常的,别慌——ServerCore本身就包含了Windows的核心组件
- 构建时要确保Docker能访问外网,因为模块是在线下载的;如果在企业内网,可能需要配置Docker代理
- 如果后续需要离线构建,可以先在本地机器上用
Save-Module把模块下载下来,再通过COPY命令拷贝到镜像里,不过新手先从在线安装开始就好
内容的提问来源于stack exchange,提问作者Som
相关产品推荐
相关产品推荐

