Windows server konteynerləri. Tətbiqi Docker konteynerinə necə bağlamaq olar? SQL Server Konteynerləri

Microsoft Windows Server 2016-dakı konteynerlər texnologiyanın müştərilər üçün imkanlarının genişləndirilməsidir. Microsoft müştərilərin inkişaf etdirilməsi, yerləşdirilməsi və indi proqramların konteynerlərdə yerləşdirilməsini onların inkişaf proseslərinin bir hissəsi kimi planlaşdırır.

Tətbiqlərin yerləşdirilməsi sürəti sürətlənməyə davam etdikcə və müştərilər gündəlik və ya hətta saatlıq əsasda proqram versiyasının yerləşdirilməsindən istifadə etdikcə, tərtibatçının klaviaturasından istehsala doğru təsdiqlənmiş proqramları sürətlə yerləşdirmək bacarığı biznesin uğuru üçün çox vacibdir. Bu proses konteynerlər tərəfindən sürətləndirilir.

Virtual maşınlar məlumat mərkəzlərində, buludda və ondan kənarda tətbiqləri köçürmək funksiyasına malik olsa da, virtuallaşdırma resursları OS virtualizasiyasından (Sistem Proqramı) istifadə edən konteynerlər tərəfindən daha da açılır. Bu qərar, virtuallaşdırma sayəsində tətbiqlərin sürətli çatdırılmasına imkan verəcək.

Windows texnologiyası konteynerinə iki daxildir müxtəlif növlər konteynerlər, Windows Server Konteyneri və Hyper-V Konteynerləri. Hər iki növ konteyner eyni şəkildə yaradılır, idarə olunur və fəaliyyət göstərir. Onlar hətta eyni konteyner şəklini istehsal edir və istehlak edirlər. Onlar bir-birindən konteyner, host əməliyyat sistemi və hostda işləyən bütün digər konteynerlər arasında yaradılmış izolyasiya səviyyəsinə görə fərqlənirlər.

Windows Server Konteynerləri: Bir neçə konteyner nümunəsi ad məkanı, resursların idarə edilməsi və prosesin izolyasiya texnologiyaları vasitəsilə təmin edilən izolyasiya ilə eyni vaxtda hostda işləyə bilər. Windows Server Konteynerləri hostda eyni nüvəyə malikdir.

Hyper-V Konteynerləri: Birdən çox konteyner nümunəsi eyni vaxtda hostda işləyə bilər. Bununla belə, hər bir konteyner xüsusi virtual maşın daxilində həyata keçirilir. Bu, hər bir Hyper-V konteyneri ilə host konteyneri arasında nüvə səviyyəsində izolyasiya təmin edir.

Microsoft konteyner xüsusiyyətinə təkcə Linux konteynerlərini deyil, həm də Windows Server və Hyper-V konteynerlərini idarə etmək üçün bir sıra Docker alətləri daxil etmişdir. Linux və Windows icmalarında əməkdaşlığın bir hissəsi olaraq, Docker təcrübəsi indi açıq mənbə olan Docker üçün PowerShell modulu yaratmaqla genişləndirildi. PowerShell modulu Docker REST API texnologiyasından istifadə edərək Linux və Windows Sever konteynerlərini yerli və ya uzaqdan idarə edə bilər. Tərtibatçılar platformamızı inkişaf etdirmək üçün açıq mənbə kodundan istifadə edən müştərilər üçün yeniliklərdən məmnundurlar. Gələcəkdə biz Hyper-V kimi yeniliklərlə yanaşı, müştərilərimizə texnologiyalar təqdim etməyi planlaşdırırıq.

Windows Server 2016 alın

Sizə Windows Server 2016-nı endirimlə almağı təklif edirik rəsmi tərəfdaş Rusiyada Microsoft – DATASYSTEMS şirkəti. Texniki dəstək mütəxəssislərimizlə əlaqə saxlayıb məsləhət almaq, həmçinin sınaq üçün pulsuz Windows Server 2016 yükləmək imkanınız olacaq. Windows Server 2016 qiyməti istəyə görə. Kommersiya təklifi Windows Server 2016-nın satın alınmasında iştirak etmək üçün siz sorğu əsasında e-poçt vasitəsilə ala bilərsiniz:

Konteyner texnologiyasının öyrənilməsi
Windows Server 2016

Windows Server 2016-da təqdim edilən diqqətəlayiq yeni xüsusiyyətlərdən biri konteynerlərə dəstəkdir. Gəlin onu daha yaxından tanıyaq

Müasir sistemlər bir OS - bir server prinsipindən çoxdan uzaqlaşıb. Virtuallaşdırma texnologiyaları server resurslarından daha səmərəli istifadə etməyə imkan verir, bir neçə əməliyyat sistemini işə salmağa, onları öz aralarında bölməyə və idarəetməni sadələşdirməyə imkan verir. Daha sonra təcrid olunmuş proqramları ayrıca, asanlıqla idarə olunan və miqyaslana bilən komponent kimi yerləşdirməyə imkan verən mikroservislər meydana çıxdı. Docker hər şeyi dəyişdi. Tətbiqin ətraf mühitlə birlikdə çatdırılması prosesi o qədər sadələşib ki, son istifadəçini maraqlandırmağa kömək edə bilməyib. Konteynerin içərisindəki proqram tam hüquqlu ƏS-dən istifadə edirmiş kimi işləyir. Lakin virtual maşınlardan fərqli olaraq, onlar ƏS-nin, kitabxanaların, sistem fayllarının və s.-nin öz nüsxələrini yükləmirlər. Konteynerlər tətbiqin bütün lazımi resurslara çıxışı olduğu, lakin onlardan kənara çıxa bilməyəcəyi təcrid olunmuş ad sahəsi alır. Parametrləri dəyişdirmək lazımdırsa, yalnız əsas OS ilə fərqlər saxlanılır. Ona görə də konteyner virtual maşınlardan fərqli olaraq çox tez işə düşür və sistemə daha az yük düşür. Konteynerlər server resurslarından daha səmərəli istifadə edir.

Windows-da konteynerlər

Windows Server 2016-da mövcud virtuallaşdırma texnologiyalarına - Hyper-V və Server App-V virtual proqramlarına əlavə olaraq, bütün lazımi funksiyaları həyata keçirən Konteyner İdarəetmə stekinin abstraksiya təbəqəsi vasitəsilə həyata keçirilən Windows Server Konteynerləri konteynerlərinə dəstək əlavə edilib. Texnologiya Technical Preview 4-də yenidən elan edildi, lakin o vaxtdan bəri sadələşdirmə istiqamətində çox şey dəyişdi və əvvəllər yazılmış təlimatları oxumağa belə ehtiyacınız yoxdur. Eyni zamanda, iki növ "onların" konteynerləri təklif edildi - Windows konteynerləri və Hyper-V konteynerləri. Və yəqin ki, başqa bir əsas fürsət, konteynerləri idarə etmək üçün PowerShell cmdletlərinə əlavə olaraq Docker alətlərindən istifadə etməkdir.

Windows konteynerləri prinsipcə FreeBSD Jail və ya Linux OpenVZ-ə bənzəyir; onlar digər resurslarla (RAM, şəbəkə) öz aralarında paylaşılan ƏS ilə bir nüvədən istifadə edirlər. ƏS və xidmət faylları hər bir konteynerin ad sahəsinə proqnozlaşdırılır. Bu tip konteyner resurslardan səmərəli istifadə edir, yerüstü xərcləri azaldır və buna görə də tətbiqlərin daha sıx yerləşdirilməsinə imkan verir. Əsas konteyner şəkilləri qovşaqla eyni nüvəyə malik olduğundan, onların versiyaları uyğun olmalıdır, əks halda işləməyə zəmanət verilmir.

Hyper-V konteynerləri əlavə izolyasiya səviyyəsindən istifadə edir və hər bir konteynerə öz nüvəsi və yaddaşı ayrılır. İzolyasiya, əvvəlki növdən fərqli olaraq, OS nüvəsi tərəfindən deyil, Hyper-V hipervizoru tərəfindən həyata keçirilir (Hyper-V rolu tələb olunur). Nəticə virtual maşınlara nisbətən daha aşağı yük, lakin Windows konteynerlərindən daha böyük izolyasiyadır. Bu halda, konteyneri işə salmaq üçün eyni OS nüvəsinə sahib olun. Bu konteynerlər Windows 10 Pro/Enterprise-də də yerləşdirilə bilər. Xüsusilə qeyd etmək lazımdır ki, konteyner növü yaradılarkən deyil, yerləşdirmə zamanı seçilir. Yəni istənilən konteyner həm Windows, həm də Hyper-V versiyası kimi işə salına bilər.

Konteyner əməliyyat sistemi kimi kəsilmiş Server Core və ya Nano Serverdən istifadə edir. Birincisi Windows Sever 2008-də ortaya çıxdı və mövcud proqramlarla daha çox uyğunluq təmin edir. İkincisi Server Core ilə müqayisədə daha da azaldılıb və monitor olmadan işləmək üçün nəzərdə tutulub və bu, serveri 93% tələb edən Hyper-V, fayl serveri (SOFS) və bulud xidmətləri ilə istifadə üçün minimum mümkün konfiqurasiyada işə salmağa imkan verir. daha az yer. Yalnız ən zəruri komponentləri ehtiva edir (.Net with CoreCLR, Hyper-V, Clustering və s.).

Şəkil formatı saxlama üçün istifadə olunur sərt disk VHDX. Konteynerlər, Docker-də olduğu kimi, depoda şəkillərdə saxlanılır. Üstəlik, hər biri məlumatların tam dəstini deyil, yalnız fərqləri saxlayır obrazı yaradılmışdırəsasdan. Və işə salınma anında bütün lazımi məlumatlar yaddaşa proqnozlaşdırılır. Virtual keçid konteyner və fiziki şəbəkə arasında şəbəkə trafikini idarə etmək üçün istifadə olunur.

Tətbiqi Docker konteynerinə necə bağlamaq olar?

Mənim NodeJS-də yazılmış ərizəm var. Konteyner kimi işləmək üçün onu Docker şəklinə necə paketləyə bilərəm?

Docker, POSIX-ə uyğun əməliyyat sistemləri üçün konteyner idarəetmə sistemidir (hazırda Linux tərəfindən dəstəklənir). Docker-in xüsusi bir xüsusiyyəti, asılılıqların quraşdırılması və ya mənbələrdən qurulması üçün uzun və mürəkkəb prosedurlar olmadan başqa bir sistemdə işlədilə biləcək şəkildə bütün lazımi mühitlə bir tətbiqi paketləmək qabiliyyətidir. Yerləşdirməyə hazır paketləşdirilmiş proqram "şəkil" adlanır. Docker şəkilləri "şablonlara" əsaslanır - əvvəlcədən konfiqurasiya edilmiş iş mühitləri. Bunları əməliyyat sistemi paylamaları kimi düşünə bilərsiniz, baxmayaraq ki, bu tamamilə doğru deyil. Siz həmçinin Docker sənədlərini nəzərdən keçirərək öz şablonunuzu yarada bilərsiniz. Bu yanaşmanın üstünlüyü ondan ibarətdir ki, tətbiqinizin şəkli yalnız proqramın özündən ibarət olacaq və onun üçün tələb olunan mühit avtomatik olaraq şablon anbarından endiriləcək. Docker bir az chroot və ya bsd həbsxanasını xatırladır, lakin fərqli işləyir.

“Konteyner” və “şəkil” anlayışlarını ayırd etmək vacibdir. Konteyner proqramınızın işləyən nüsxəsidir, şəkil isə proqramın saxlandığı və konteynerin yaradıldığı fayldır.

Deyək ki, konteynerləşdirmək istədiyiniz NodeJS proqramınız var. Fərz edək ki, proqramınızı işlədən fayl server.js adlanır və proqram işləmək üçün 8000 portunu dinləyir.Biz şablon kimi "node:carbon" istifadə edəcəyik. Tətbiqinizi konteynerləşdirmək üçün proqram fayllarınızın yerləşdiyi qovluqda təsvirin hazırlanması parametrlərini təsvir edəcək “Dockerfile” faylı yaratmalısınız:

$ Dockerfile toxunun

Faylın məzmunu belə ola bilər:

# FROM node:carbon istifadə etmək üçün şablonu göstərin # Konteyner daxilində proqramın iş kataloqunu yaradın WORKDIR /usr/src/app # Npm istifadə edərək proqram asılılıqlarını quraşdırın # Həm package.json, həm də package-lock.json faylları kopyalanır, əgər varsa, KOPYA paket*.json ./ RUN npm install # Tətbiq fayllarınızı COPY şəklinə köçürün. . # 8000 portunu açın ki, EXPOSE 8000 konteynerindən kənardan əldə olunsun # Proqramı CMD konteynerində işə salmaq əmrini yerinə yetirin [ "npm", "start" ]

Şəkildən lazımsız faylları çıxarmaq üçün onların adlarını ".dockerignore" faylında sadalaya bilərsiniz. Siz maskadan (*.log) istifadə edə bilərsiniz.

Şəkil aşağıdakı əmrlə qurulur:

$ docker build -t istifadəçi adı/node-web-app .

$ docker şəkilləri # Nümunə REPOZİTORİYA ETİKET İDİYASI YARADILDI karbon qovşağı 1934b0b038d1 5 gün əvvəl istifadəçi adı/node-web-app son d64d3505b0d2 1 dəqiqə əvvəl

Konteyner aşağıdakı əmrdən istifadə edərək şəkildən işə salınır:

$ docker run -p 49160:8000 -d istifadəçi adı/node-web-app

Bu nümunə "istifadəçi adı/node-web-app" şəklindən konteyner yaradır və onu dərhal işə salır. Tətbiq portu 8000 yerli maşında (localhost) mövcuddur və onun “kənarda” əlçatan olması üçün o, 49160 portuna “yönləndirilir”. İstənilən pulsuz portu seçə bilərsiniz, əlavə olaraq, tətbiqi yönləndirmək mümkündür. " -p 8000:8000" seçimini göstərərək "olduğu kimi" port.

Konteynerinizin işlədiyini əmri daxil etməklə görə bilərsiniz:

$ docker ps # Nümunə ID ŞƏKİL ƏMƏR ... PORTLAR ecce33b30ebf istifadəçi adı/node-web-app:son npm başlanğıcı ... 49160->8000

Konteyneri müxtəlif əmrlərdən istifadə edərək bu konteynerin ID-sini təyin etməklə idarə etmək olar:

$ docker pause ecce33b30ebf - ecce33b30ebf ID ilə konteyneri dayandırın
$ docker resume ecce33b30ebf - ecce33b30ebf ID ilə konteyneri davam etdirin
$ docker stop ecce33b30ebf - ecce33b30ebf ID ilə konteyneri dayandırın
$ docker rm ecce33b30ebf - konteyneri silin (bu, konteyner daxilində proqram tərəfindən yaradılmış bütün məlumatları silir)

Bitdi! Ya dualar kömək etdi, ya da qurbanlar, amma indi içərisində Windows ilə Docker konteynerlərini işlədə bilərsiniz. Böyük xəbər Windows Server 2016-nın buraxılışı ilə birlikdə gəldi. Və biz bəzi ağıllı şəkildə gizlədilmiş virtual maşından və ya Linux nüvəsindəki Windows emulyasiyasından danışmırıq - real Windows, işləyən Dockerfile, docker-compose və digər Docker ilə real Docker-də işləyir. əşyalar.

Məhdudiyyətlər

Ancaq bu, indi istənilən konteyneri hər yerdə işlədə biləcəyiniz demək deyil. Docker konteynerləri əməliyyat sisteminin nüvəsini hostdan “borc” aldığına görə (əks halda onlar öz ƏS-lərinə sahib olmalı və virtual maşına çevrilməli olacaqlar), Windows konteynerləri yalnız ən son Windows 10 Pro Anniversary Update və Windows Server 2016.

İkinci məqam ondan ibarətdir ki, Windows-da doğma Linux konteynerini işə salmaq hələ də mümkün deyil. Yubiley Yeniləməsinin öz Linux alt sistemi var (məsələn, onunla real Bash-i işlədə bilərsiniz), lakin o, tam hüquqlu Linux nüvəsini saxlamır, ona görə də Windows-da Ubuntu ilə eyni konteynerə hələ də gizli virtual maşın lazımdır.

Nəhayət, hər iki konteyneri eyni vaxtda Windows maşınında işlədə bilərsiniz, lakin müəyyən çətinliklə. Bu əmri Docker quraşdırılmış Windows Server 2016-da işlətsəniz (bir il əvvəl mən bu sehrbazlıq deyərdim), o işləyəcək:

Ancaq bu əmrdən sonra Ubuntu konteynerini işə salmağa çalışsanız, Docker kədərlənəcək:

Problem ondadır ki, Windows və Linux konteynerlərinə fərqli Docker demonları xidmət göstərir, lakin onlar komanda xətti ilə əlaqə saxlamaq üçün eyni kanaldan istifadə edirlər. Yəni istənilən vaxt yalnız bir cin aktiv ola bilər. Rəsmi Docker saytında problemi həll etməyə çalışan “Windows üçün Docker” beta var (hazırda yalnız Windows 10 Pro və Enterprise-da). Bununla belə, Windows-dan Linux konteynerlərinə keçmək üçün ya parametrlər menyusuna getmək və ya komanda xətti ilə əlaqə saxlamaq lazımdır:

PowerShell

& "C:\Proqram Faylları\Docker\Docker\DockerCli.exe" -SwitchDaemon

& "C:\Proqram Faylları\Docker\Docker\DockerCli.exe"-SwitchDaemon

Windows şəkilləri

İndiyə qədər konteynerləşdirilmiş Windows ilə yalnız iki əsas şəkil var:

Siz öz əsas şəklinizi yarada bilməzsiniz (cızıq şəkil).

Windows Server Core şəklinin çəkisi 10 konsertə qədərdir və ümumiyyətlə özünü tam hüquqlu Windows Server 2016 kimi aparır. Məsələn, MS SQL və tam hüquqlu .NET Framework orada problemsiz quraşdırılıb. Tətbiqiniz UI-dən çox asılı deyilsə, o zaman quraşdırılacaq.

Nano Server bir az daha maraqlıdır. Bu, bir konsertdən az olan yüksək dərəcədə optimallaşdırılmış və ləğv edilmiş Windows Serveridir. Ancaq kifayət qədər məhdudiyyətlər də var: 32 bit proqramlar, UI, RDP, doğranmış PowerShell və s. Lakin bu, Nano Serverdə eyni IIS, .NET Core və hətta bəzi MySQL-i quraşdırmanıza mane olmur.

Bir neçə il əvvəl kim təsəvvür edə bilərdi ki, Dockerfile-də eyni anda “Microsoft”, “Windows” və “PowerShell” tapa bilərsiniz?

microsoft/windowsservercore-DAN RUN powershell -Command....

microsoft/windowsservercore-dan

RUN powershell - Komanda. . . .

Bu Docker-də Windows-dur! Hələ absurd səslənir.

İzolyasiya dərəcələri

Windows konteynerləri iki izolyasiya rejimində işlədilə bilər:

  • Windows Server Konteynerləri
  • Hyper-V Konteynerləri

Birinci Windows rejimində konteynerlər Docker-dəki bütün digər konteynerlər kimi davranırlar: onlar əməliyyat sistemi ilə ümumi nüvəni paylaşırlar, konteyner prosesləri təcrid olunub, lakin yenə də host proses ağacında görünür və s. Bu, defoltdur və ən çoxu. sürətli yol konteyneri Windows-da işə salın.

İkinci halda, konteynerlər xüsusi Hyper-V virtual maşınına düşür. Bu, əlbəttə ki, başlanğıc sürətinə pis təsir edir, lakin izolyasiya tamamlandı.

Nəticə

Docker-də Windows əla xəbərdir. Məhsullarınızı qablara qablaşdırmağa tələsməsəniz belə, bu, vahid testlərinizi, istehsal maşınlarınızı, demo serverlərinizi, qum qutularınızı - əvvəllər virtual maşın yaratmalı olduğunuz hər şeyi təcrid etmək üçün əla vasitədir. Əgər Microsoft hələ də Linux-da nanoserver işə salmağı bacarırsa, iki ay əvvəl ağılsızlıqla aldığım Microsoft Band 2-nin bu yaxınlarda dayandırılmasına görə onları bağışlayacağam.

*nix sistemləri ilkin olaraq multitasking həyata keçirir və prosesləri təcrid etməyə və idarə etməyə imkan verən alətlər təklif edir. Fayl sistemi səviyyəsində izolyasiyanı təmin edən chroot(), nüvə strukturlarına girişi məhdudlaşdıran FreeBSD Jail, LXC və OpenVZ kimi texnologiyalar çoxdan məlumdur və geniş istifadə olunur. Lakin texnologiyanın inkişafı üçün təkan Docker oldu ki, bu da tətbiqləri rahat şəkildə yaymağa imkan verdi. İndi eyni şey Windows-a gəldi.

Windows-da konteynerlər

Müasir serverlərin həddən artıq tutumu var və proqramlar bəzən hətta onların hissələrini istifadə etmir. Nəticədə sistemlər havanı qızdıraraq bir müddət "boş dayanır". Həll, bir serverdə bir neçə əməliyyat sistemini işə salmağa imkan verən, onları öz aralarında ayırmağa və hər birinə lazımi miqdarda resurs ayırmağa zəmanət verən virtuallaşdırma idi. Lakin tərəqqi hələ də dayanmır. Növbəti mərhələ mikroservislərdir, tətbiqin hər bir hissəsi ayrıca, tələb olunan yükə asanlıqla miqyaslana bilən və yenilənə bilən, özünü təmin edən komponent kimi yerləşdirildikdə. İzolyasiya digər proqramların mikroservisə müdaxiləsinin qarşısını alır. Ətraf mühitlə yanaşı tətbiqlərin qablaşdırılması və çatdırılması prosesini sadələşdirən Docker layihəsinin meydana çıxması ilə mikroservislərin arxitekturası inkişafda əlavə təkan aldı.

Konteynerlər, OS Virtualizasiyası adlanan, işləyən proqramlar üçün ayrıca mühit təmin edən başqa bir virtuallaşdırma növüdür. Konteynerlər, işləmək üçün lazım olan bütün resursları (virtuallaşdırılmış adlar) özündə birləşdirən, qarşılıqlı əlaqə qura biləcəyiniz (fayllar, şəbəkə portları, proseslər və s.) və tərk edə bilməyəcəyiniz təcrid olunmuş ad məkanından istifadə etməklə həyata keçirilir. Yəni, OS konteynerə yalnız ayrılanları göstərir. Konteynerin içərisində olan proqram onun yeganə olduğuna inanır və heç bir məhdudiyyət olmadan tam hüquqlu ƏS-də işləyir. Mövcud faylı dəyişdirmək və ya yenisini yaratmaq lazımdırsa, konteyner yalnız dəyişdirilmiş bölmələri saxlayaraq əsas host OS-dən nüsxələri alır. Buna görə, bir hostda birdən çox konteyner yerləşdirmək çox səmərəlidir.

Konteynerlər və virtual maşınlar arasındakı fərq ondan ibarətdir ki, konteynerlər ƏS-nin, kitabxanaların, sistem fayllarının və s.-nin öz nüsxələrini yükləməzlər. əməliyyat sistemi sanki konteynerlə paylaşılır. Tələb olunan yeganə əlavə şey proqramın konteynerdə işləməsi üçün tələb olunan resurslardır. Nəticədə konteyner bir neçə saniyə ərzində işə başlayır və virtual maşınlardan istifadə edərkən sistemi daha az yükləyir. Docker hazırda depoda 180 min proqram təklif edir və format Açıq Konteyner Təşəbbüsü (OCI) tərəfindən birləşdirilmişdir. Lakin nüvədən asılılıq o deməkdir ki, konteynerlər başqa OS-də işləməyəcək. Linux konteynerləri Linux API tələb edir, ona görə də Windows Linux-da işləməyəcək.

Son vaxtlara qədər Windows tərtibatçıları iki virtuallaşdırma texnologiyası təklif edirdilər: virtual maşınlar və Server App-V virtual proqramları. Hər birinin öz tətbiq yeri, müsbət və mənfi cəhətləri var. İndi diapazon daha da genişlənib - Windows Server 2016-da konteynerlər elan edilib. TP4 zamanı inkişaf hələ başa çatmamış olsa da, yeni texnologiyanı hərəkətdə görmək və nəticə çıxarmaq artıq mümkündür. Qeyd etmək lazımdır ki, hazır texnologiyaları əldə edərək, MS tərtibatçıları bəzi məsələlərdə bir qədər irəli getdilər ki, konteynerlərdən istifadə daha asan və universal oldu. Əsas fərq ondan ibarətdir ki, iki növ konteyner təklif olunur: Windows konteynerləri və Hyper-V konteynerləri. TP3-də yalnız birincilər mövcud idi.

Windows konteynerləri öz aralarında dinamik olaraq paylaşılan ƏS ilə bir nüvədən istifadə edir. Dağıtım prosesi (CPU, RAM, şəbəkə) ƏS tərəfindən qəbul edilir. Lazım gələrsə, konteynerə ayrılan maksimum mövcud resursları məhdudlaşdıra bilərsiniz. ƏS faylları və işləyən xidmətlər hər bir konteynerin ad sahəsinə uyğunlaşdırılır. Bu tip konteyner resurslardan səmərəli istifadə edir, yerüstü xərcləri azaldır və buna görə də tətbiqlərin daha sıx yerləşdirilməsinə imkan verir. Bu rejim bir qədər FreeBSD Jail və ya Linux OpenVZ-ni xatırladır.

Hyper-V konteynerləri Hyper-V istifadə edərək əlavə izolyasiya səviyyəsini təmin edir. Hər bir konteynerə öz nüvəsi və yaddaşı ayrılır, izolyasiya əməliyyat sisteminin nüvəsi tərəfindən deyil, Hyper-V hipervizoru tərəfindən həyata keçirilir. Nəticə virtual maşınlarla eyni təcrid səviyyəsidir, VM-lərdən daha az, lakin Windows konteynerlərindən daha çox yükə malikdir. Bu tip konteynerdən istifadə etmək üçün hostda Hyper-V rolunu quraşdırmalısınız. Windows konteynerləri etibarlı mühitdə istifadə üçün daha uyğundur, məsələn, serverdə eyni təşkilatın proqramlarını işə salarkən. Bir server birdən çox şirkət tərəfindən istifadə edildikdə və daha yüksək səviyyədə izolyasiya tələb olunduqda, Hyper-V konteynerlərinin daha mənalı olacağı ehtimal edilir.

Win 2016-da konteynerlərin mühüm xüsusiyyəti, növün yaradılma zamanı deyil, yerləşdirmə zamanı seçilməsidir. Yəni istənilən konteyner həm Windows, həm də Hyper-V kimi işə salına bilər.

Win 2016-da konteynerlər üçün bütün lazımi funksiyaları həyata keçirən Konteyner İdarəetmə yığını abstraksiya təbəqəsi cavabdehdir. Saxlama üçün VHDX sabit disk təsvir formatı istifadə olunur. Konteynerlər, Docker-də olduğu kimi, depoda şəkillərdə saxlanılır. Üstəlik, hər biri məlumatların tam dəstini saxlamır, yalnız yaradılmış görüntü ilə əsas arasındakı fərqləri saxlayır və işə salınma zamanı bütün lazımi məlumatlar yaddaşa proqnozlaşdırılır. Virtual keçid konteyner və fiziki şəbəkə arasında şəbəkə trafikini idarə etmək üçün istifadə olunur.

Konteynerdə OS kimi Server Core və ya Nano Server istifadə edilə bilər. Birincisi, ümumiyyətlə, uzun müddətdir yeni deyil və təmin edir yüksək səviyyə mövcud proqramlarla uyğunluq. İkincisi, monitorsuz işləmək üçün daha da ixtisar edilmiş versiyadır, Hyper-V, fayl serveri (SOFS) və bulud xidmətləri ilə istifadə üçün serveri minimum mümkün konfiqurasiyada işə salmağa imkan verir. Əlbəttə ki, qrafik interfeys yoxdur. Yalnız ən zəruri komponentləri ehtiva edir (CoreCLR ilə .NET, Hyper-V, Clustering və s.). Ancaq sonda 93% daha az yer tutur və daha az kritik düzəliş tələb edir.

Başqa bir maraqlı məqam. Konteynerləri idarə etmək üçün ənənəvi PowerShell-dən əlavə Docker-dən də istifadə edə bilərsiniz. Win-də yerli olmayan kommunal proqramları işə salmaq imkanı təmin etmək üçün MS Docker API və alətlər dəstini genişləndirmək üçün əməkdaşlıq etdi. Bütün inkişaflar açıqdır və Docker layihəsinin rəsmi GitHub-da mövcuddur. Docker idarəetmə əmrləri həm Win, həm də Linux kimi bütün konteynerlərə aiddir. Baxmayaraq ki, əlbəttə ki, Windows-da Linux-da yaradılmış konteyneri işə salmaq mümkün deyil (eləcə də əksinə). Hazırda PowerShell funksionallığı məhduddur və yalnız yerli repozitoriya ilə işləməyə imkan verir.

Quraşdırma qabları

Azure tələb olunan Windows Server 2016 Core with Containers Tech Preview 4 şəklinə malikdir və siz onu yerləşdirə və konteynerləri araşdırmaq üçün istifadə edə bilərsiniz. Əks təqdirdə, hər şeyi özünüz konfiqurasiya etməlisiniz. Yerli quraşdırma üçün sizə Win 2016 lazımdır və Win 2016-da Hyper-V daxili virtualizasiyanı dəstəklədiyi üçün o, fiziki və ya virtual server ola bilər. Komponentlərin quraşdırılması prosesinin özü standartdır. Rol və Xüsusiyyətlər Əlavə etmə Sihirbazında müvafiq elementi seçin və ya PowerShell-dən istifadə edərək əmr verin

PS> Quraşdırma-WindowsFeature Konteynerləri

Proses zamanı Virtual Switch şəbəkə nəzarətçisi də quraşdırılacaq, o, dərhal konfiqurasiya edilməlidir, əks halda sonrakı hərəkətlər xəta yaradacaq. Şəbəkə adapterlərinin adlarına baxaq:

PS>Get-NetAdapter

İşləmək üçün bizə Xarici tipli bir nəzarətçi lazımdır. New-VMSwitch cmdletinin çoxlu parametrləri var, lakin bu nümunə üçün biz minimal parametrlərlə məşğul olacağıq:

PS> Yeni-VMSwitch -Ad Xarici -NetAdapterName Ethernet0

Yoxlayırıq:

PS> Get-VMSwitch | harada ($_.SwitchType –eq "Xarici")

Windows təhlükəsizlik duvarı konteynerə qoşulmaları bloklayacaq. Buna görə də, ən azı PowerShell uzaqdan istifadə edərək uzaqdan qoşula bilmək üçün icazə verən qayda yaratmaq lazımdır; bunun üçün biz TCP/80-ə icazə verəcəyik və NAT qaydası yaradacağıq:

PS> Yeni-NetFirewallRule -Ad "TCP80" -DisplayName "TCP/80-də HTTP" -Protokol tcp -LocalPort 80 -Fəaliyyət icazəsi -Aktivdir True PS> Add-NetNatStaticMapping -NatName "ContainerNat" -ProtokolA TCP0 -ExternalIP0.0. DaxiliIPAdresi 192.168.1.2 -InternalPort 80 -ExternalPort 80

Sadə yerləşdirmə üçün başqa bir seçim var. Tərtibatçılar avtomatik olaraq bütün asılılıqları quraşdırmağa və hostu konfiqurasiya etməyə imkan verən skript hazırlayıblar. İstəsəniz istifadə edə bilərsiniz. Skript daxilindəki parametrlər bütün mexanizmləri başa düşməyə kömək edəcək:

PS> https://aka.ms/tp4/Install-ContainerHost -OutFile C:\Install-ContainerHost.ps1 PS> C:\Install-ContainerHost.ps1

Başqa bir seçim var - konteyner dəstəyi ilə hazır virtual maşını yerləşdirmək. Bunun üçün eyni resursda avtomatik olaraq hər şeyi istehsal edən bir skript var zəruri əməliyyatlar. ətraflı təlimatlar MSDN-də qeyd edilmişdir. Skripti yükləyin və işə salın:

PS> wget -uri https://aka.ms/tp4/New-ContainerHost -OutFile c:\New-ContainerHost.ps1 PS> C:\New-ContainerHost.ps1 –VmName WinContainer -WindowsImage ServerDatacenterCore

Biz adı özbaşına təyin edirik və -WindowsImage toplanan təsvirin növünü göstərir. Seçimlər NanoServer, ServerDatacenter ola bilər. Docker də dərhal quraşdırılır; onun olmaması və ya olması üçün SkipDocker və IncludeDocker parametrləri cavabdehdir. Başladıqdan sonra şəklin yüklənməsi və çevrilməsi başlayacaq, proses zamanı VM-yə daxil olmaq üçün parol təyin etməlisiniz. ISO faylının özü olduqca böyükdür, demək olar ki, 5 GB. Kanal yavaşdırsa, fayl başqa kompüterə endirilə bilər, sonra WindowsServerTP4 olaraq dəyişdirilə və C:\Users\Public\Documents\Hyper-V\Virtual Hard Disk-ə kopyalana bilər. Quraşdırılmış virtual maşına daxil ola, montaj zamanı göstərilən parolu göstərə və işləyə bilərik.

İndi birbaşa konteynerlərdən istifadəyə keçə bilərsiniz.

PowerShell ilə konteynerlərdən istifadə

Konteynerlər modulunda 32 PowerShell cmdlet var, onlardan bəziləri hələ də natamamdır, baxmayaraq ki, ümumiyyətlə hər şeyin işləməsi üçün kifayətdir. Siyahıya salmaq asandır:

PS> Get-Command -modul Konteynerləri

Get-ContainerImage cmdlet, konteynerlər - Get-Container istifadə edərək mövcud şəkillərin siyahısını əldə edə bilərsiniz. Konteyner vəziyyətində, Status sütunu onun cari vəziyyətini göstərəcək: dayandırılıb və ya işləyir. Lakin texnologiya inkişaf mərhələsində olsa da, MS anbar təmin etməyib və qeyd edildiyi kimi, PowerShell hazırda lokal repozitoriya ilə işləyir, ona görə də təcrübələr üçün onu özünüz yaratmalı olacaqsınız.

Beləliklə, dəstəyi olan bir serverimiz var, indi konteynerlərin özlərinə ehtiyacımız var. Bunun üçün ContainerProvider paket provayderini quraşdırın.

Davamı yalnız üzvlər üçün əlçatandır

Seçim 1. Saytdakı bütün materialları oxumaq üçün “sayt” icmasına qoşulun

Müəyyən edilmiş müddət ərzində cəmiyyətə üzvlük sizə BÜTÜN Hacker materiallarına giriş imkanı verəcək, şəxsi məcmu endiriminizi artıracaq və peşəkar Xakep Score reytinqi toplamağa imkan verəcək!