日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

Windows 应用容器化

發(fā)布時(shí)間:2023/11/29 windows 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows 应用容器化 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景

在這個(gè)時(shí)間點(diǎn),我們可能已經(jīng)對(duì) Linux 容器使用已經(jīng)達(dá)到熟練掌握的程度,因?yàn)?Docker 與 Kubernetes 都是最早為 Linux 平臺(tái)設(shè)計(jì)。當(dāng)我們從容器這項(xiàng)技術(shù)中體會(huì)到種種收益,對(duì)于我們的 windows 的應(yīng)用是否也能利用容器技術(shù)簡(jiǎn)化我們的開(kāi)發(fā)運(yùn)維?對(duì)于大型的企業(yè)來(lái)說(shuō),Windows 系列的開(kāi)發(fā)程序也會(huì)占一定的比例,這個(gè)時(shí)候領(lǐng)導(dǎo)可能會(huì)有一個(gè)指示下來(lái):“我們 .Net 應(yīng)用也要上容器云”。

好的,任務(wù)拿到以后我們首先要解決的第一件事就是 Windows 應(yīng)用容器化,雖然我們知道 .Net Core 是一個(gè)可以跨平臺(tái)運(yùn)行,但仍然有很多使用 .Net Framwork 編寫(xiě)的應(yīng)用仍在運(yùn)行和迭代,所以 Docker on Windows 是一條必須要走的路,好在微軟和 Docker 在這方面有足夠的投入。

小貼士:對(duì)于企業(yè)來(lái)說(shuō),轉(zhuǎn)型并不是把原來(lái)所有的資產(chǎn)全部拋棄,是利用能利用的原有資產(chǎn)和新的技術(shù)繼續(xù)向前進(jìn)

Windows 容器類(lèi)型

雖然我們常說(shuō) Container 的實(shí)現(xiàn)方案不僅只有 Docker, 但我們?cè)趯?shí)際使用上用的最最最多還是 Docker。這里心疼 Docker 三秒鐘?。在 Windows 容器化的實(shí)現(xiàn)上分為兩類(lèi):

  • Hyper-V 容器
    • 類(lèi)似于 Docker on Mac, Docker on Windows 也經(jīng)歷了通過(guò)基于 Hypervisor 的虛擬化技術(shù)來(lái)實(shí)現(xiàn)非原生 Linux 平臺(tái)上的容器方案。 Mac 上使用的是 hyperkit ,Windows 上有 Hyper-V 。
    • 這就相當(dāng)于每個(gè)容器運(yùn)行在一個(gè)被高度優(yōu)化過(guò)的虛擬機(jī)里,他們之間不共享操作系統(tǒng)內(nèi)核,好處是會(huì)有更好的安全隔離性,以及在操作系統(tǒng)的內(nèi)核上有更多的選擇性。
  • Native 容器
    • 類(lèi)似于我們?cè)?Linux 上使用的容器,基于 process 和 namespace 的隔離。

這兩種不同的容器類(lèi)型,從操作角度上是一致的,像Build、Push、Run 等等,不同的是它是 Windows 環(huán)境,需要使用 powershell 或者 cmd 去寫(xiě) Dockerfile, 當(dāng)然這個(gè)對(duì)于 Windows 的運(yùn)維人員沒(méi)什么問(wèn)題。

Windows Dockerfile 示例

看一個(gè)簡(jiǎn)單的例子:

FROM microsoft/windowsservercore:1803COPY ConsoleTest.exe C:/ENTRYPOINT C:/ConsoleTest.exe

我們注意到這個(gè) Dockerfile 的 base 鏡像是 windowsservercore:1803 ,意味著這個(gè)鏡像是可以和 windowsserver 1803 兼容的 Docker 鏡像, 這里提到到了一個(gè) Windows Host OS 與 容器 OS 的版本兼容性:

Container OS versionHost OS Version
Windows Server 2016 Builds: 14393.Windows 10 1609, 1703 Builds: 14393., 15063.Windows Server version 1709 Builds 16299.Windows 10 Fall Creators Update Builds 16299.Windows Server version 1803 Builds 17134.Windows 10 version 1803 Builds 17134.
Windows Server 2016 Builds: 14393.Supports processorhypervisolationSupports OnlyhypervisolationSupports OnlyhypervisolationSupports OnlyhypervisolationSupports OnlyhypervisolationSupports Onlyhypervisolation
Windows Server version 1709 Builds 16299.Not supportedNot supportedSupports processorhypervisolationSupports OnlyhypervisolationSupports OnlyhypervisolationSupports Onlyhypervisolation
Windows Server version 1803 Builds 17134.Not supportedNot supportedNot supportedNot supportedSupports processorhypervisolationSupports Onlyhypervisolation

翻譯過(guò)是:

  • 相同的 OS 版本可以支持 native container 和 hyperv container
  • Host OS 版本高,Container OS 版本低,可以用 hyperv container
  • Container OS 比 Host OS 高? 那就不行了。
  • 再看一個(gè)例子:

    buildapp.ps1

    # Remove existing default web site files remove-item C:\inetpub\wwwroot\iisstart.*# Ensure write permissions over web app project files icacls C:\inetpub\wwwroot\WebTest /grant Everyone:F /t /q# Import necessary IIS modules then set app project folder as web application Import-Module IISAdministration Import-Module WebAdministrationNew-Item 'IIS:\Sites\Default Web Site\WebTest' -Type Application -PhysicalPath 'C:\inetpub\wwwroot\WebTest' Set-WebConfigurationProperty -p 'MACHINE/WEBROOT/APPHOST' -fi 'system.applicationHost/log' -n 'centralLogFileMode' -v 'CentralW3C'; ` Set-WebConfigurationProperty -p 'MACHINE/WEBROOT/APPHOST' -fi 'system.applicationHost/log/centralW3CLogFile' -n 'truncateSize' -v 4294967295; ` Set-WebConfigurationProperty -p 'MACHINE/WEBROOT/APPHOST' -fi 'system.applicationHost/log/centralW3CLogFile' -n 'period' -v 'MaxSize'; ` Set-WebConfigurationProperty -p 'MACHINE/WEBROOT/APPHOST' -fi 'system.applicationHost/log/centralW3CLogFile' -n 'directory' -v 'c:\iislog'

    runapp.ps1

    Start-Service W3SVC; ` Invoke-WebRequest http://localhost -UseBasicParsing | Out-Null; ` netsh http flush logbuffer | Out-Null; ` Get-Content -path 'c:\iislog\W3SVC\u_extend1.log' -Tail 1 -Wait

    Dockerfile

    FROM microsoft/dotnet-framework:4.7.2-sdk-20180814-windowsservercore-1803# WebTest.NET dependencies RUN dism.exe /online /enable-feature /all /featurename:iis-webserver /NoRestart RUN powershell add-windowsfeature web-asp-net45# Configure Web App COPY runapp.ps1 buildapp.ps1 WebTest.zip C:/SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] RUN powershell -Command { Expand-Archive -Path C:\WebTest.zip -DestinationPath C:\inetpub\wwwroot\WebTest } RUN powershell -Command { Remove-Item C:\WebTest.zip -Force }RUN powershell.exe C:/buildapp.ps1 EXPOSE 80ENTRYPOINT ["powershell", "C:/runapp.ps1"]

    上面的例子做了一件事是把 iis 的文件日志輸出通過(guò) tail 的方式轉(zhuǎn)換成了標(biāo)準(zhǔn)輸出,這樣 docker logs 就能看到日志輸出了

    提問(wèn)?

  • 什么情況下用 ContainerOS 使用 latest 的 tag?
  • 如果是在 Kubernetes 的環(huán)境下除了通過(guò)轉(zhuǎn)換成標(biāo)準(zhǔn)輸出,還能怎樣采集 iis 的文件日志?
  • 下一篇: 快速搭建 Windows Kubernetes 環(huán)境


    Ref:

    • https://docs.docker.com/docker-for-mac/
    • https://github.com/moby/hyperkit
    • https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/hyper-v-technology-overview
    • https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/#windows-container-types
    • https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility

    轉(zhuǎn)載于:https://www.cnblogs.com/bigdaddyblog/p/9672415.html

    總結(jié)

    以上是生活随笔為你收集整理的Windows 应用容器化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。