为什么针对windows的docker映像可以在azure中作为Linux Web应用程序运行?
我可能不完全理解docker,我想这就是我写这篇文章的原因。据我所知,linux容器基本上运行在linux内核上,而windows one运行在windows上 我有以下设置:为什么针对windows的docker映像可以在azure中作为Linux Web应用程序运行?,azure,docker,azure-devops,Azure,Docker,Azure Devops,我可能不完全理解docker,我想这就是我写这篇文章的原因。据我所知,linux容器基本上运行在linux内核上,而windows one运行在windows上 我有以下设置: *.csproj <DockerDefaultTargetOS>Windows</DockerDefaultTargetOS> 所以基本上它会拉取窗口图像。所有东西都在本地构建和工作(事实上,由于权限问题,我无法让它在Linux上运行,这就是为什么我首先选择Windows的原因) 该应用程序是一
*.csproj
<DockerDefaultTargetOS>Windows</DockerDefaultTargetOS>
所以基本上它会拉取窗口
图像。所有东西都在本地构建和工作(事实上,由于权限问题,我无法让它在Linux上运行,这就是为什么我首先选择Windows的原因)
该应用程序是一个.NETCore2.2WebApp
然后我想在Azure Devops中设置我的CI/CD管道。建造:
pool:
name: Hosted Windows 2019 with VS2019
steps:
- task: Docker@0
displayName: 'Build an image'
inputs:
azureSubscription: 'MySubscription'
azureContainerRegistry: 'myRegistry'
dockerFile: API/Dockerfile
defaultContext: False
context: '$(System.DefaultWorkingDirectory)'
imageName: 'reg/name:$(Build.BuildId)'
- task: Docker@0
displayName: 'Push an image'
inputs:
azureSubscription: 'Subscription'
azureContainerRegistry: 'myContainerRegistry'
action: 'Push an image'
imageName: 'reg/name:$(Build.BuildId)'
并出版:
steps:
- task: Docker@0
displayName: 'Push an image'
inputs:
azureSubscription: 'MySubscription'
azureContainerRegistry: 'registry'
action: 'Push an image'
imageName: 'reg/name:$(Build.BuildId)'
奇怪的是,我不知道为什么会起作用。我想发布它,并且认为它是一个windows映像,它必须是以下列表中的一个Web应用程序:
它找不到图像,所以在做了一些修改后,我尝试简单地将其更改为Linux Web App
,其中包含用于实际查找正确图像的字段(开箱即用),将其添加到容器注册表中,等等,但效果很好。看起来WebApp配置很像是经典的zip部署,而Linux Web App实际上更像是一种“Docker App”配置
我只是想弄明白为什么会这样,如果我严重误解了Docker的实际工作。只要应用程序像.net core一样是跨平台的,那么容器类型是什么就无关紧要了吗
steps:
- task: Docker@0
displayName: 'Push an image'
inputs:
azureSubscription: 'MySubscription'
azureContainerRegistry: 'registry'
action: 'Push an image'
imageName: 'reg/name:$(Build.BuildId)'