Mga lalagyan ng Windows server. Paano mag-package ng isang application sa isang lalagyan ng Docker? Mga Lalagyan ng SQL Server

Ang mga container sa Microsoft Windows Server 2016 ay isang extension ng teknolohiya para sa mga customer. Ang Microsoft ay nagpaplano ng customer development, deployment, at ngayon ay containerized na application hosting bilang bahagi ng kanilang proseso ng pag-develop.

Habang patuloy na tumataas ang mga rate ng deployment ng application at ginagamit ng mga customer ang mga deployment ng bersyon ng application araw-araw o kahit oras-oras, ang kakayahang mabilis na mag-deploy ng mga application ng validation ng keyboard ng developer sa produksyon ay kritikal sa tagumpay ng negosyo. Ang prosesong ito ay pinabilis ng mga lalagyan.

Bagama't may kakayahan ang mga VM na ilipat ang mga application sa mga datacenter at papunta at mula sa cloud, ang mga mapagkukunan ng virtualization ay higit na na-unlock ng mga container sa pamamagitan ng OS virtualization (System Software). Ang desisyong ito, salamat sa virtualization, ay magbibigay-daan para sa mabilis na paghahatid ng application.

Kasama sa Windows Technology Container ang dalawa iba't ibang uri container, Windows Server Container at Hyper-V Container. Ang parehong uri ng mga container ay ginawa, pinamamahalaan at gumagana sa parehong paraan. Gumagawa at kumakain pa sila ng parehong imahe ng lalagyan. Naiiba sila sa kanilang mga sarili sa antas ng paghihiwalay na ginawa sa pagitan ng container, ng host operating system at lahat ng iba pang container na tumatakbo sa host.

Mga Lalagyan ng Windows Server: Maaaring tumakbo nang sabay-sabay ang maraming instance ng container sa isang host na may isolation na ibinigay sa pamamagitan ng namespace, resource management, at process isolation na teknolohiya. Ang Windows Server Containers ay nagbabahagi ng parehong core, na naka-host.

Mga Lalagyan ng Hyper-V: Maaaring tumakbo nang sabay-sabay ang maraming instance ng container sa isang host. Gayunpaman, ang bawat lalagyan ay ipinatupad sa loob ng isang nakalaang virtual machine. Nagbibigay ito ng kernel-level isolation sa pagitan ng bawat Hyper-V container at ng host container.

Ang Microsoft na kasama sa lalagyan ay nagtatampok ng isang hanay ng mga tool ng Docker upang pamahalaan hindi lamang ang mga lalagyan ng Linux, kundi pati na rin ang mga lalagyan ng Windows Server at Hyper-V. Bilang bahagi ng isang pakikipagtulungan sa loob ng mga komunidad ng Linux at Windows, ang karanasan ng Docker ay pinalawak sa pamamagitan ng paglikha ng isang PowerShell module para sa Docker, na ngayon ay open source para sa. Maaaring pamahalaan ng PowerShell module ang mga container ng Linux at Windows Sever nang lokal o malayuan gamit ang Docker REST API. Ang mga developer ay nasisiyahan sa pagbabago para sa mga customer sa pamamagitan ng open source na pag-unlad ng aming platform. Sa pagpapatuloy, plano naming magdala ng teknolohiya sa aming mga customer kasama ng mga inobasyon tulad ng Hyper-V.

Bumili ng Windows Server 2016

Nag-aalok kami sa iyo na bumili ng Windows Server 2016 sa isang diskwento mula sa Opisyal na Kasosyo Microsoft sa Russia - Mga Kumpanya ng DATASYSTEM. Magkakaroon ka ng pagkakataong makakuha ng payo, gayundin ang pag-download ng Windows Server 2016 nang libre para sa pagsubok sa pamamagitan ng pakikipag-ugnayan sa aming mga espesyalista sa teknikal na suporta. Presyo ng Windows Server 2016 kapag hiniling. Komersyal na alok upang lumahok sa pagbili ng Windows Server 2016, maaari kang makatanggap kapag hiniling sa pamamagitan ng e-mail:

Paggalugad ng teknolohiya ng lalagyan
Windows Server 2016

Isa sa mga kapansin-pansing bagong feature na ipinakilala sa Windows Server 2016 ay suporta para sa mga container. Kilalanin natin siya

Ang mga modernong sistema ay matagal nang lumayo sa prinsipyo ng isang OS - isang server. Ang mga teknolohiya ng virtualization ay nagbibigay-daan sa mas mahusay na paggamit ng mga mapagkukunan ng server, na nagbibigay-daan sa iyong magpatakbo ng maraming operating system, na naghihiwalay sa mga ito sa isa't isa at nagpapasimple ng pangangasiwa. Pagkatapos ay mayroong mga microservice na nagbibigay-daan sa iyong mag-deploy ng mga nakahiwalay na application bilang isang hiwalay na madaling pinamamahalaan at nasusukat na bahagi. Binago ng Docker ang lahat. Ang proseso ng paghahatid ng isang application kasama ng isang kapaligiran ay naging napakasimple na hindi nito maiwasang mainteresan ang end user. Gumagana ang application sa loob ng container na parang gumagamit ng isang ganap na OS. Ngunit hindi tulad ng mga virtual machine, hindi sila naglo-load ng kanilang sariling mga kopya ng OS, mga aklatan, mga file ng system, atbp. Nakatanggap ang mga container ng nakahiwalay na namespace kung saan ang lahat ng kinakailangang mapagkukunan ay magagamit sa application, ngunit hindi ito maaaring lumabas. Kung kailangan mong baguhin ang mga setting, ang mga pagkakaiba lamang sa pangunahing OS ang nai-save. Samakatuwid, ang lalagyan, hindi tulad ng mga virtual machine, ay nagsisimula nang napakabilis at mas kaunti ang paglo-load sa system. Ang mga container ay gumagamit ng mga mapagkukunan ng server nang mas mahusay.

Mga lalagyan sa Windows

Sa Windows Server 2016, bilang karagdagan sa mga umiiral na teknolohiya ng virtualization - Hyper-V at Server App-V virtual na mga application, ang suporta para sa mga container ng Windows Server Containers ay idinagdag, na ipinatupad sa pamamagitan ng Container Management stack abstraction layer na nagpapatupad ng lahat ng kinakailangang function. Ang teknolohiya ay inihayag pabalik sa Teknikal na Preview 4, ngunit mula noon ay marami na ang nagbago tungo sa pagpapasimple at ang mga tagubiling nakasulat nang mas maaga ay hindi na mabasa. Kasabay nito, iminungkahi ang dalawang uri ng "sariling" mga lalagyan - mga lalagyan ng Windows at mga lalagyan ng Hyper-V. At marahil ang isa pang pangunahing pagkakataon ay ang paggamit ng mga tool ng Docker bilang karagdagan sa PowerShell cmdlet upang pamahalaan ang mga lalagyan.

Ang mga lalagyan ng Windows ay kahawig ng FreeBSD Jail o Linux OpenVZ sa prinsipyo, gumagamit sila ng isang core sa OS, na, kasama ang iba pang mga mapagkukunan (RAM, network), ay ibinabahagi sa kanilang mga sarili. Ang mga file at serbisyo ng OS ay nakamapa sa namespace ng bawat container. Ang ganitong uri ng container ay mahusay na gumagamit ng mga mapagkukunan, binabawasan ang overhead, at samakatuwid ay nagbibigay-daan sa mga application na mailagay nang mas siksik. Dahil ang mga batayang larawan ng container ay "may" isang core na may isang node, ang kanilang mga bersyon ay dapat tumugma, kung hindi, ang operasyon ay hindi ginagarantiyahan.

Gumagamit ang mga hyper-V na container ng karagdagang isolation layer at ang bawat container ay inilalaan ng sarili nitong core at memory. Ang paghihiwalay, hindi katulad ng naunang uri, ay ginagawa hindi ng OS kernel, ngunit ng Hyper-V hypervisor (nangangailangan ng Hyper-V role). Ang resulta ay mas mababa sa overhead kaysa sa mga virtual machine, ngunit higit na paghihiwalay kaysa sa mga lalagyan ng Windows. Sa kasong ito, upang patakbuhin ang lalagyan, magkaroon ng parehong OS kernel. Ang mga container na ito ay maaari ding i-deploy sa Windows 10 Pro/Enterprise. Mahalagang tandaan na ang uri ng lalagyan ay hindi pinili sa oras ng paggawa, ngunit sa oras ng pag-deploy. Iyon ay, ang anumang lalagyan ay maaaring patakbuhin bilang Windows at bilang isang variant ng Hyper-V.

Bilang OS sa lalagyan, ginagamit ang na-trim na Server Core o Nano Server. Ang una ay lumitaw sa Windows Sever 2008 at nagbibigay ng higit na pagiging tugma sa mga umiiral na application. Ang pangalawa ay mas nahubaran kaysa sa Server Core at idinisenyo upang tumakbo nang walang monitor, na nagbibigay-daan sa iyong patakbuhin ang server sa pinakamaliit na posibleng configuration para magamit sa Hyper-V, file server (SOFS) at mga serbisyo sa cloud, na nangangailangan ng 93% na mas kaunti space. Naglalaman lamang ng mga pinakakailangang bahagi (.Net na may CoreCLR, Hyper-V, Clustering, atbp.).

Ang format ng imahe ay ginagamit para sa imbakan. hard drive vhdx. Ang mga lalagyan, tulad ng sa kaso ng Docker, ay nai-save bilang mga imahe sa repositoryo. Sa kung ano ang bawat isa ay hindi nagse-save ng isang kumpletong hanay ng data, ngunit ang mga pagkakaiba lamang nilikhang imahe mula sa base. At sa oras ng paglunsad, ang lahat ng kinakailangang data ay inaasahang nasa memorya. Ginagamit ang Virtual Switch upang pamahalaan ang trapiko sa network sa pagitan ng lalagyan at ng pisikal na network.

Paano mag-package ng isang application sa isang lalagyan ng Docker?

Mayroon akong isang application na nakasulat sa NodeJS. Paano ko ito mai-package sa isang imahe ng Docker upang tumakbo bilang isang lalagyan?

Ang Docker ay isang container management system para sa POSIX-compliant operating system (Linux ay kasalukuyang sinusuportahan). Ang isang tampok ng Docker ay ang kakayahang mag-package ng isang application kasama ang lahat ng kinakailangang kapaligiran sa paraang patakbuhin ito sa ibang system nang walang mahaba at kumplikadong mga pamamaraan para sa pag-install ng mga dependency o pagbuo mula sa pinagmulan. Ang isang naka-package na application na handa nang i-deploy ay tinatawag na "imahe". Ang mga imahe ng Docker ay batay sa "mga template" - na-preconfigured na mga working environment. Maaaring isipin ng isa ang mga ito bilang mga pamamahagi ng operating system, bagaman hindi ito ganap na totoo. Maaari ka ring lumikha ng iyong sariling template sa pamamagitan ng pagbabasa ng dokumentasyon ng Docker. Ang bentahe ng diskarteng ito ay ang iyong application image ay maglalaman lamang ng application mismo, at ang kapaligiran na kinakailangan para dito ay awtomatikong mada-download mula sa template repository. Ang Docker ay medyo katulad ng chroot o bsd jail, ngunit ito ay gumagana nang iba.

Mahalagang makilala ang mga konsepto ng "lalagyan" at "imahe". Ang container ay isang tumatakbong kopya ng iyong application, at ang isang imahe ay isang file na nag-iimbak ng application at kung saan ginawa ang container.

Sabihin nating mayroon kang NodeJS application na gusto mong i-package sa isang container. Ipagpalagay natin na ang file na nagpapatakbo ng iyong application ay tinatawag na server.js, at ang application ay nakikinig sa port 8000 upang tumakbo. Gagamitin namin ang "node:carbon" bilang isang template. Upang ilagay sa lalagyan ang application, kailangan mong lumikha ng "Dockerfile" na file sa direktoryo kung saan matatagpuan ang iyong mga file ng application, na maglalarawan sa mga parameter para sa paghahanda ng larawan:

$ touch Dockerfile

Ang mga nilalaman ng file ay maaaring magmukhang ganito:

# Tukuyin ang template na gagamitin FROM node:carbon # Lumikha ng gumaganang direktoryo ng application sa loob ng container WORKDIR /usr/src/app # I-install ang mga dependency ng application gamit ang npm # Kopyahin ang parehong package.json AT package-lock.json kung may COPY package* json ./ RUN npm install # Kopyahin ang iyong mga file ng aplikasyon sa imaheng COPY . . # Buksan ang port 8000 para ma-access ito sa labas ng EXPOSE 8000 container # Ipatupad ang command para patakbuhin ang application sa loob ng CMD container [ "npm", "start" ]

Upang ibukod ang mga hindi kinakailangang file mula sa larawan, maaari mong ilista ang kanilang mga pangalan sa ".dockerignore" na file. Maaari kang gumamit ng mask (*.log).

Ang imahe ay binuo gamit ang sumusunod na command:

$ docker build -t username/node-web-app .

$ docker images # Halimbawa REPOSITORY TAG ID CREATED node carbon 1934b0b038d1 5 araw ang nakalipas username/node-web-app pinakabagong d64d3505b0d2 1 minuto ang nakalipas

Ang pagsisimula ng isang lalagyan mula sa isang imahe ay ginagawa gamit ang sumusunod na utos:

$ docker run -p 49160:8000 -d username/node-web-app

Ang halimbawang ito ay gumagawa ng container mula sa larawang "username/node-web-app" at magsisimula kaagad. Ang application port 8000 ay magagamit sa lokal na makina (localhost) at upang ito ay magagamit "sa labas", ito ay "ipinasa" sa port 49160. Maaari kang pumili ng anumang libreng port, bilang karagdagan, posible na ipasa ang application port "as is" sa pamamagitan ng pagtukoy sa opsyon na " -p 8000:8000".

Makikita mong tumatakbo ang iyong container sa pamamagitan ng pag-isyu ng command:

$ docker ps # Halimbawa ng ID IMAGE COMMAND ... PORTS ecce33b30ebf username/node-web-app:pinakabagong npm start ... 49160->8000

Maaaring pamahalaan ang container gamit ang iba't ibang command, na tumutukoy sa ID ng container na ito:

$ docker pause ecce33b30ebf - i-pause ang container na may ID ecce33b30ebf
$ docker resume ecce33b30ebf - resume container ID ecce33b30ebf
$ docker stop ecce33b30ebf - stop container na may ID ecce33b30ebf
$ docker rm ecce33b30ebf - alisin ang lalagyan (tinatanggal nito ang lahat ng data na nilikha ng application sa loob ng lalagyan)

Tapos na! Maaaring nakatulong ang mga panalangin, o mga sakripisyo, ngunit maaari ka na ngayong magpatakbo ng mga container ng Docker na may Windows sa loob. Ang magandang balita ay dumating kasama ng paglabas ng Windows Server 2016. At hindi namin pinag-uusapan ang tungkol sa ilang matalinong nakatagong virtual machine, o Windows emulation sa isang Linux kernel - ang tunay na Windows ay tumatakbo sa isang tunay na Docker, na may gumaganang Dockerfile, docker- mag-compose at iba pang mga gimik sa docker.

Mga paghihigpit

Ngunit hindi ito nangangahulugan na maaari ka na ngayong magpatakbo ng anumang lalagyan kahit saan. Dahil sa katotohanang "ginagalaw" ng mga container ng Docker ang kernel ng operating system mula sa kanilang host (kung hindi, kakailanganin nilang magkaroon ng sarili nilang OS at maging isang virtual machine), ang mga lalagyan ng Windows ay maaari lamang patakbuhin sa pinakabagong Windows 10 Pro Anniversary Update at Windows Server 2016.

Ang pangalawang punto ay imposible pa ring magpatakbo ng isang katutubong lalagyan ng Linux sa Windows. Ang Anniversary Update ay may sariling Linux subsystem (kung saan maaari kang magpatakbo ng isang tunay na Bash, halimbawa), ngunit kulang ito para sa isang ganap na kernel ng Linux, kaya kailangan pa rin ng isang nakatagong virtual machine para sa parehong lalagyan na may Ubuntu sa Windows .

Sa wakas, maaari mong patakbuhin ang parehong mga lalagyan sa isang Windows machine nang sabay, ngunit sa isang sayaw. Kung patakbuhin mo ang utos na ito sa Windows Server 2016 na may naka-install na Docker (isang taon na ang nakalipas tatawagin ko itong pangkukulam), gagana ito:

Ngunit kung pagkatapos ng utos na ito ay susubukan mong simulan ang lalagyan ng Ubuntu, malungkot si Docker:

Ang problema ay ang mga lalagyan ng Windows at Linux ay pinaglilingkuran ng iba't ibang mga daemon ng Docker, na gayunpaman ay gumagamit ng parehong channel upang makipag-usap sa command line. Ibig sabihin, isang daemon lang ang maaaring maging aktibo sa isang pagkakataon. Mayroong beta na "Docker para sa Windows" sa opisyal na site ng Docker na sumusubok na ayusin ang isyu (sa Windows 10 Pro at Enterprise lamang sa ngayon). Ngunit kahit na kasama nito, upang lumipat mula sa Windows patungo sa mga lalagyan ng Linux, kailangan mong umakyat sa menu ng mga setting o makipag-usap sa command line:

Power shell

& "C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchDaemon

& "C:\Program Files\Docker\Docker\DockerCli.exe"-SwitchDaemon

Mga larawan sa Windows

Sa ngayon, mayroon lamang dalawang pangunahing larawan na may containerized na Windows:

Hindi ka makakagawa ng sarili mong base image (scratch image).

Ang imahe ng Windows Server Core ay tumitimbang ng hanggang 10 gig at sa pangkalahatan ay kumikilos tulad ng isang ganap na Windows Server 2016. Halimbawa, ang MS SQL at ang buong .NET Framework ay naka-install doon nang walang mga problema. Kung hindi masyadong umaasa ang iyong app sa UI, mai-install din ito.

Ang Nano Server ay bahagyang mas kawili-wili. Ito ay isang napaka-optimized at stripped-down na Windows Server na mas mababa sa isang gig. Ngunit may sapat na mga paghihigpit: walang 32-bit na application, UI, RDP, gupitin ang PowerShell, atbp. Ngunit hindi nito pinipigilan ang pag-install ng parehong IIS, .NET Core, at kahit ilang MySQL sa Nano Server.

At maaari bang maisip ng sinuman ilang taon na ang nakalilipas na sa isang Dockerfile posible na matugunan ang "Microsoft", "Windows" at "PowerShell" nang sabay-sabay?

MULA sa microsoft/windowservercore RUN powershell -Command....

MULA sa microsoft/windowservercore

RUN powershell-Command . . . .

Ito ay Windows sa Docker! Parang absurd pa rin.

Mga antas ng paghihiwalay

Maaaring tumakbo ang mga lalagyan ng Windows sa dalawang mode ng paghihiwalay:

  • Mga Lalagyan ng Windows Server
  • Mga Lalagyan ng Hyper-V

Sa unang Windows mode, ang mga container ay kumikilos tulad ng lahat ng iba pang mga container sa Docker: ang mga ito ay nagbabahagi ng isang karaniwang core sa operating system, ang mga proseso ng container ay nakahiwalay ngunit nakikita pa rin sa puno ng proseso ng host, atbp. Ito ang default at karamihan mabilis na paraan magpatakbo ng lalagyan sa mga bintana.

Sa pangalawang kaso, ang lalagyan ay napupunta sa isang espesyal na Hyper-V virtual machine. Ito, siyempre, ay may masamang epekto sa bilis ng paglulunsad, ngunit kumpleto ang paghihiwalay.

Konklusyon

Ang Windows sa Docker ay magandang balita lamang. Kahit na hindi ka nagmamadaling i-container ang iyong mga produkto, isa itong mahusay na tool para sa pagbubukod ng iyong mga unit test, production machine, demo server, sandbox - lahat ng bagay na kailangan mong gumawa ng virtual machine para sa dati. Kung nagagawa pa rin ng Microsoft na patakbuhin ang nanoserver sa Linux, patatawarin ko sila sa kamakailang paghinto ng Microsoft Band 2, na hindi maingat na binili dalawang buwan na ang nakaraan.

*Ang nix system ay katutubong nagpapatupad ng multitasking at nag-aalok ng mga tool upang ihiwalay at kontrolin ang mga proseso. Ang mga teknolohiya tulad ng chroot(), na nagbibigay ng paghihiwalay sa antas ng file system, FreeBSD Jail, na naghihigpit sa pag-access sa mga istruktura ng kernel, LXC at OpenVZ, ay matagal nang kilala at malawakang ginagamit. Ngunit ang impetus sa pag-unlad ng teknolohiya ay Docker, na naging posible upang maginhawang ipamahagi ang mga aplikasyon. Ngayon ay nakarating na ito sa Windows.

Mga lalagyan sa Windows

Ang mga modernong server ay labis na gumaganap, at ang mga application ay minsan ay hindi gumagamit ng kahit na bahagi ng mga ito. Bilang isang resulta, ang mga sistema ay "idle" sa loob ng ilang oras, pinainit ang hangin. Ang solusyon ay virtualization, na nagpapahintulot sa iyo na magpatakbo ng ilang mga operating system sa isang server, garantisadong ibahagi ang mga ito sa kanilang mga sarili at maglaan ng tamang dami ng mga mapagkukunan sa bawat isa. Ngunit ang pag-unlad ay hindi tumitigil. Ang susunod na yugto ay microservices, kapag ang bawat bahagi ng application ay naka-deploy nang hiwalay, bilang isang self-sufficient na bahagi na madaling mai-scale sa nais na load at na-update. Pinipigilan ng paghihiwalay ang ibang mga application na makagambala sa microservice. Sa pagdating ng proyekto ng Docker, na pinasimple ang proseso ng packaging at paghahatid ng mga aplikasyon kasama ang kapaligiran, ang arkitektura ng microservices ay nakatanggap ng karagdagang impetus sa pag-unlad.

Ang mga container ay isa pang uri ng virtualization na nagbibigay ng hiwalay na kapaligiran para sa pagpapatakbo ng mga application, na tinatawag na OS Virtualization. Ipinapatupad ang mga lalagyan sa pamamagitan ng paggamit ng nakahiwalay na namespace, na kinabibilangan ng lahat ng mapagkukunan (mga virtualized na pangalan) na kinakailangan para sa trabaho, kung saan maaari kang makipag-ugnayan (mga file, network port, proseso, atbp.) at hindi mo maaaring lampasan. Iyon ay, ipinapakita ng OS sa lalagyan lamang kung ano ang napili. Ang application sa loob ng container ay nag-iisip na ito ay nag-iisa at tumatakbo sa isang ganap na OS nang walang anumang mga paghihigpit. Kung kinakailangan na baguhin ang isang umiiral na file o lumikha ng bago, ang lalagyan ay tumatanggap ng mga kopya mula sa pangunahing host OS, pinapanatili lamang ang mga nabagong bahagi. Samakatuwid, ang pag-deploy ng maraming container sa isang host ay napakahusay.

Ang pagkakaiba sa pagitan ng mga container at virtual machine ay ang mga container ay hindi naglo-load ng sarili nilang mga kopya ng OS, mga library, system file, at iba pa. operating system parang ibinahagi sa lalagyan. Ang tanging karagdagang kinakailangan ay ang mga mapagkukunang kailangan upang patakbuhin ang application sa container. Bilang resulta, magsisimula ang lalagyan sa loob ng ilang segundo at mas mababa ang paglo-load sa system kaysa sa kaso ng mga virtual machine. Kasalukuyang nag-aalok ang Docker ng 180,000 application sa repository, at pinag-isa ang format ng Open Container Initiative (OCI). Ngunit ang pag-asa sa kernel ay nagpapahiwatig na ang mga lalagyan ay hindi gagana sa ibang OS. Ang mga lalagyan ng Linux ay nangangailangan ng Linux API, kaya hindi gagana ang Windows sa Linux.

Hanggang kamakailan, nag-alok ang mga developer ng Windows ng dalawang teknolohiya sa virtualization: mga virtual machine at mga virtual na application ng Server App-V. Ang bawat isa ay may sariling angkop na lugar ng aplikasyon, ang mga kalamangan at kahinaan nito. Ngayon ang saklaw ay naging mas malawak - ang mga lalagyan (Windows Server Container) ay inihayag sa Windows Server 2016. At kahit na sa oras ng TP4 ang pag-unlad ay hindi pa nakumpleto, posible na makita ang bagong teknolohiya sa pagkilos at gumawa ng mga konklusyon. Dapat tandaan na, nakakakuha at pagkakaroon ng mga handa na teknolohiya sa kamay, ang mga developer ng MS ay lumayo nang kaunti sa ilang mga isyu, upang ang paggamit ng mga lalagyan ay naging mas madali at mas maraming nalalaman. Ang pangunahing pagkakaiba ay mayroong dalawang uri ng mga lalagyan na inaalok: mga lalagyan ng Windows at mga lalagyan ng Hyper-V. Sa TP3, ang mga una lang ang available.

Ginagamit ng mga Windows container ang parehong kernel gaya ng OS, na dynamic na ibinabahagi sa kanilang mga sarili. Ang proseso ng pamamahagi (CPU, RAM, network) ay kinuha ng OS. Maaari mong opsyonal na limitahan ang maximum na magagamit na mga mapagkukunan na inilalaan sa isang lalagyan. Ang mga OS file at tumatakbong serbisyo ay nakamapa sa namespace ng bawat container. Ang ganitong uri ng container ay mahusay na gumagamit ng mga mapagkukunan, binabawasan ang overhead, at samakatuwid ay nagbibigay-daan sa mga application na mailagay nang mas siksik. Ang mode na ito ay medyo nakapagpapaalaala sa FreeBSD Jail o Linux OpenVZ.

Ang mga lalagyan ng Hyper-V ay nagbibigay ng karagdagang layer ng paghihiwalay sa Hyper-V. Ang bawat lalagyan ay inilalaan ng sarili nitong kernel at memorya, ang paghihiwalay ay hindi isinasagawa ng OS kernel, ngunit ng Hyper-V hypervisor. Ang resulta ay ang parehong antas ng paghihiwalay gaya ng mga VM, na may mas kaunting overhead kaysa sa isang VM, ngunit higit pa sa mga container ng Windows. Para magamit ang ganitong uri ng container, kailangan mong i-install ang Hyper-V role sa host. Ang mga lalagyan ng Windows ay mas angkop para sa paggamit sa isang pinagkakatiwalaang kapaligiran, tulad ng kapag ang mga application mula sa parehong organisasyon ay tumatakbo sa isang server. Kapag ang isang server ay ginagamit ng maraming kumpanya at higit pang paghihiwalay ang kailangan, ang mga lalagyan ng Hyper-V ay malamang na magkaroon ng higit na kahulugan.

Ang isang mahalagang tampok ng mga lalagyan sa Win 2016 ay ang uri ay hindi pinili sa oras ng paglikha, ngunit sa oras ng pag-deploy. Iyon ay, anumang lalagyan ay maaaring ilunsad kapwa bilang Windows at bilang Hyper-V.

Sa Win 2016, ang Container Management stack abstraction layer ay responsable para sa mga container, na nagpapatupad ng lahat ng kinakailangang function. Para sa storage, ginagamit ang VHDX hard disk image format. Ang mga lalagyan, tulad ng sa kaso ng Docker, ay iniimbak bilang mga imahe sa repositoryo. Bukod dito, ang bawat isa ay hindi nagse-save ng isang kumpletong hanay ng data, ngunit ang mga pagkakaiba lamang sa pagitan ng nilikha na imahe at ng batayang imahe, at sa oras ng paglulunsad, ang lahat ng kinakailangang data ay inaasahang nasa memorya. Ginagamit ang Virtual Switch upang pamahalaan ang trapiko sa network sa pagitan ng lalagyan at ng pisikal na network.

Ang OS sa container ay maaaring Server Core o Nano Server. Ang una, sa pangkalahatan, ay hindi isang bagong bagay para sa isang mahabang panahon at nagbibigay mataas na lebel pagiging tugma sa mga umiiral na application. Ang pangalawa ay isang mas stripped-down na monitorless na bersyon na nagbibigay-daan sa iyong patakbuhin ang server sa pinakamaliit na posibleng configuration para magamit sa Hyper-V, file server (SOFS) at cloud services. Ang graphical na interface, siyempre, ay nawawala. Naglalaman lamang ng mga pinakakailangang bahagi (.NET na may CoreCLR, Hyper-V, Clustering, at iba pa). Ngunit sa huli ay tumatagal ito ng 93% na mas kaunting espasyo, nangangailangan ng mas kaunting kritikal na pag-aayos.

Isa pang kawili-wiling punto. Upang pamahalaan ang mga lalagyan, bilang karagdagan sa tradisyonal na PowerShell, maaari mo ring gamitin ang Docker. At upang gawing posible na magpatakbo ng mga hindi katutubong kagamitan sa Win, nakipagsosyo ang MS na palawigin ang Docker API at toolset. Ang lahat ng mga pagpapaunlad ay bukas at magagamit sa opisyal na GitHub ng proyekto ng Docker. Nalalapat ang mga command sa pamamahala ng Docker sa lahat ng container, parehong Win at Linux. Bagaman, siyempre, ang isang lalagyan na nilikha sa Linux ay hindi maaaring ilunsad sa Windows (pati na rin ang kabaligtaran). Sa ngayon, ang PowerShell ay limitado sa functionality at pinapayagan ka lang na magtrabaho sa isang lokal na repositoryo.

Pag-install ng mga Lalagyan

Ang Azure ay mayroong kinakailangang larawan ng Windows Server 2016 Core with Containers Tech Preview 4 na maaari mong i-deploy at gamitin para mag-explore ng mga container. Kung hindi, kailangan mong i-configure ang lahat sa iyong sarili. Para sa lokal na pag-install, kailangan mo ng Win 2016, at dahil sinusuportahan ng Hyper-V sa Win 2016 ang nested virtualization (Nested virtualization), maaari itong maging pisikal o virtual na server. Ang proseso ng pag-install ng bahagi ay pamantayan. Piliin ang naaangkop na item sa Add Roles and Features Wizard o, gamit ang PowerShell, ilabas ang command

PS>I-install-WindowsFeature Container

Sa proseso, mai-install din ang Virtual Switch network controller, dapat itong i-configure kaagad, kung hindi, ang mga karagdagang aksyon ay bubuo ng error. Tinitingnan namin ang mga pangalan ng mga adapter ng network:

PS> Get-NetAdapter

Para gumana, kailangan namin ng controller na may uri na External. Ang New-VMSwitch cmdlet ay may maraming mga parameter, ngunit para sa kapakanan ng halimbawa, hayaan natin na may kaunting mga setting:

PS> New-VMSwitch -Pangalan Panlabas -NetAdapterName Ethernet0

Sinusuri namin:

PS> Kunin ang VMSwitch | kung saan ($_.SwitchType –eq "External")

Iba-block ng Windows firewall ang mga koneksyon sa container. Samakatuwid, kailangan mong gumawa ng allow rule, kahit man lang para sa kakayahang kumonekta nang malayuan gamit ang PowerShell remoting, para dito papayagan namin ang TCP / 80 at lumikha ng NAT rule:

PS> New-NetFirewallRule -Name "TCP80" -DisplayName "HTTP on TCP/80" -Protocol tcp -LocalPort 80 -Action Allow -Enabled True PS> Add-NetNatStaticMapping -NatName "ContainerNat" -Protocol TCP -External0IPAddress 0. InternalIPAddress 192.168.1.2 -InternalPort 80 -ExternalPort 80

May isa pang simpleng opsyon sa pag-deploy. Ang mga developer ay naghanda ng isang script na nagbibigay-daan sa iyong awtomatikong i-install ang lahat ng mga dependency at i-configure ang host. Magagamit mo ito kung gusto mo. Ang mga parameter sa loob ng script ay makakatulong sa iyo na maunawaan ang lahat ng mga mekanismo:

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

May isa pang pagpipilian - upang i-deploy ang isang handa na virtual machine na may suporta sa lalagyan. Upang gawin ito, sa parehong mapagkukunan mayroong isang script na awtomatikong gumaganap ng lahat ninanais na mga operasyon. detalyadong mga tagubilin nakalista sa MSDN. I-download at patakbuhin ang script:

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

Ang pangalan ay arbitrary, at -WindowsImage ay nagpapahiwatig ng uri ng imahe na binuo. Maaaring ang mga opsyon ay NanoServer, ServerDatacenter. Ang Docker ay naka-install din kaagad, ang SkipDocker at IncludeDocker parameter ay responsable para sa kawalan o presensya nito. Pagkatapos ng paglunsad, magsisimulang mag-load at mag-convert ang imahe, sa proseso ay kakailanganin mong tumukoy ng password para makapasok sa VM. Ang ISO file mismo ay medyo malaki, halos 5 GB. Kung mabagal ang channel, maaaring ma-download ang file sa ibang computer, pagkatapos ay palitan ang pangalan sa WindowsServerTP4 at kopyahin sa C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks . Maaari kaming mag-log in sa naka-install na virtual machine sa pamamagitan ng pagtukoy sa set ng password sa panahon ng pagpupulong, at trabaho.

Ngayon ay maaari kang direktang pumunta sa paggamit ng mga lalagyan.

Paggamit ng mga lalagyan na may PowerShell

Ang module ng Containers ay naglalaman ng 32 PowerShell cmdlet, ang dokumentasyon para sa ilan ay hindi pa kumpleto, bagama't, sa pangkalahatan, ito ay sapat na upang gawin ang lahat ng bagay. Ang listahan ay madaling makuha:

PS> Get-Command -module na Mga Lalagyan

Makakakuha ka ng listahan ng mga available na larawan gamit ang Get-ContainerImage cmdlet, mga container - Get-Container. Sa kaso ng isang lalagyan, ipapakita ng column na Status ang kasalukuyang status nito: huminto o tumatakbo. Ngunit habang ang teknolohiya ay nasa ilalim ng pag-unlad, ang MS ay hindi nagbigay ng isang repositoryo, at, tulad ng nabanggit, habang ang PowerShell ay nagtatrabaho sa isang lokal na imbakan, kaya kailangan mo itong likhain mismo para sa mga eksperimento.

Kaya, mayroon kaming isang server na may suporta, ngayon kailangan namin ang mga lalagyan mismo. Upang gawin ito, itinakda namin ang provider ng package na ContainerProvider.

Patuloy na magagamit sa mga miyembro lamang

Pagpipilian 1. Sumali sa komunidad ng "site" upang basahin ang lahat ng materyal sa site

Ang membership sa komunidad sa loob ng tinukoy na panahon ay magbibigay sa iyo ng access sa LAHAT ng materyales ng Hacker, dagdagan ang iyong personal na pinagsama-samang diskwento at magbibigay-daan sa iyong makaipon ng propesyonal na Xakep Score rating!