GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak vytvořit obrázek Docker Windows pomocí Docker Build Tag

Jste v Docker Windows Images noví? Pracujete v současné době v obchodě se systémem Windows a chcete se dozvědět o sestavení Dockeru pro obrázky kontejnerů? Jste na správném místě. Nejlepší způsob, jak se dozvědět o něčem novém, je pomocí docker build a docker build "tag" příkazy!

V tomto článku se naučíte, jak vytvořit svůj první obrázek Windows Docker ze souboru Dockerfile pomocí docker build příkaz.

Začněme!

Vysvětlení obrázků kontejnerů Docker

Po celá léta bylo jediným způsobem, jak testovat nebo provádět vývoj na více operačních systémech (OS), mít několik vyhrazených fyzických nebo virtuálních počítačů vytvořených s verzí OS dle vašeho výběru. Tato metodika vyžadovala více hardwaru a režie k poskytování nových strojů pro každý software a specifikaci OS.

V dnešní době však používání obrazů kontejnerů Docker vzrostlo částečně kvůli popularitě architektury mikroslužeb. V reakci na nárůst popularity Dockeru začal Microsoft veřejně podporovat obrázky Docker pro několik vlajkových produktů na své stránce Docker Hub. Dokonce přidali nativní podporu pro obrázky pro Windows jako funkci produktu ve Windows 10 a Windows Server 2016!

Obraz Dockeru je spuštěn v kontejneru pomocí Docker Engine. Docker obrazy mají mnoho výhod, jako je přenositelnost (použitelná pro více prostředí a platforem), přizpůsobitelné a vysoce škálovatelné. Jak můžete vidět níže, na rozdíl od tradičních virtuálních strojů běží Docker engine na vrstvě mezi jádrem hostitelského OS a izolovanými aplikačními službami, které jsou kontejnerizovány.

Sestavení a obrázky Dockeru

docker build Příkaz lze využít k automatizaci vytváření bitové kopie kontejneru, přijetí praxe DevOps typu kontejner jako kód a integraci kontejnerizace do vývojového cyklu vašich projektů. Dockerfiles jsou jednoduše textové soubory, které obsahují pokyny k sestavení používané Dockerem k vytvoření nového obrázku kontejneru, který je založen na existujícím obrázku.

Uživatel může určit základní obraz a seznam příkazů, které se mají spustit, když je obraz kontejneru nasazen nebo poprvé spuštěn. V tomto článku se dozvíte, jak vytvořit bitovou kopii dockeru pro Windows z Dockerfile pomocí kontejneru Windows.

Tento proces má několik výhod oproti použití předem vytvořeného obrazu kontejneru:

  1. Můžete znovu vytvořit bitovou kopii kontejneru pro několik verzí systému Windows – což je skvělé pro testování změn kódu na několika platformách.
  2. Budete mít větší kontrolu nad tím, co je v kontejneru nainstalováno. To vám umožní udržet velikost kontejneru na minimu.
  3. Z bezpečnostních důvodů možná budete chtít zkontrolovat, zda kontejner neobsahuje chyby zabezpečení, a na základní bitovou kopii použít zesílení zabezpečení

Předpoklady/požadavky

Tento článek je návodem, jak se naučit, jak vytvořit image Docker pomocí Dockerfile. Pokud chcete pokračovat, ujistěte se, že máte splněny následující předpoklady.

  • Nainstalován Docker pro Windows. Ve svém prostředí budu používat Docker Community Edition (CE) verze 2.1.0.4.
  • Pro stahování obrázků Docker je nutný přístup k internetu
  • Operační systém Windows 10+ (pro tento výukový program se používá verze 1709)
  • Vnořená virtualizace povolena
  • 5 GB volného místa na disku na místním počítači
  • PowerShell 5.0+
  • Tento kurz používá Visual Studio Code IDE. Neváhejte však použít jakékoli IDE, které byste preferovali.

Poznámka:Při instalaci Dockeru nezapomeňte povolit konfiguraci kontejnerů Windows.

Příprava

Nejprve budete potřebovat složku pro uložení všech obrázků Docker a kontejnerů, které z těchto obrázků vytvoříte. Chcete-li tak učinit, otevřete Powershell nebo terminál cmd (v tomto článku budete PowerShell používat) a vytvořte nový adresář s názvem C:\Containers.

Jakmile je složka vytvořena, přejděte do tohoto adresáře. Tím se aktuální pracovní adresář konzoly přesune do C:\Containers na výchozí nastavení všech stahování do tohoto adresáře.

PS51> mkdir C:\Containers
PS51> cd C:\Containers

V tomto článku získáte náskok. Většina souborů pro práci v tomto projektu je již k dispozici. Jakmile je složka vytvořena, zkopírujte soubory potřebné pro tento článek z úložiště Github TechSnips do C:\Containers. složka. Po dokončení se ujistěte, že C:\Containers složka vypadá níže.

Stažení obrazu IIS Windows Docker

Prvním úkolem je stáhnout „šablonu“ nebo základní obrázek. Později si vytvoříte svůj vlastní obrázek Dockeru, ale nejprve potřebujete obrázek, se kterým začnete. Budete stahovat nejnovější IIS a Windows Server Core Images, které jsou vyžadovány pro tento výukový program. Aktualizovaný seznam obrázků lze nalézt na oficiální stránce s obrázky centra Microsoft Docker.

Kontrola aktuálních základních obrázků Docker

Před stažením obrázku z úložiště obrázků si nejprve projdeme aktuální základní obrázky Dockeru, které aktuálně máte ve svém místním systému. Chcete-li to provést, spusťte konzolu PowerShell jako správce a zadejte docker images . Tento příkaz vrátí všechny obrázky ve vašem lokálním systému.

Jak můžete vidět níže, dostupné obrázky jsou zpočátku prázdné.

PS51> docker images

Stažení základního obrázku

Nyní je čas stáhnout základní obraz IIS z Docker Hub. Chcete-li to provést, spusťte docker pull Jak je ukázáno níže. Dokončení tohoto procesu může nějakou dobu trvat v závislosti na rychlosti vašeho internetu.

PS51> docker pull mcr.microsoft.com/windows/servercore/iis

Nyní spusťte docker images a pro tento výukový program byste měli mít k dispozici nejnovější bitovou kopii Microsoft Windows Core IIS.

PS51> docker images

Kontrola souboru Dockerfile

V předchozím kroku jste si pro tento výukový program stáhli existující soubor Dockerfile. Pojďme se nyní podívat na to, co přesně to obnáší.

Otevřete C:\Containers\Container1\Dockerfile soubor ve vašem oblíbeném editoru. Obsah tohoto souboru Dockerfile se používá k definování toho, jak bude obraz kontejneru nakonfigurován v době sestavení.

Vysvětlení toho, co každá část tohoto souboru dělá, můžete vidět v komentářích na řádku.

# Specifies that the latest microsoft/iis image will be used as the base image
# Used to specify which base container image will be used by the build process.

# Notice that the naming convention is "**owner/application name : tag name**"
# (shown as microsoft/iis:latest); so in our case the owner of the image is
# Microsoft and the application is IIS with the "latest" tag name being used
# to specify that you will pull the most recent image version available.
FROM microsoft/iis:latest

# Copies contents of the wwwroot folder to the inetpub/wwwroot folder in the new container image
# Used to specify that you want to copy the WWWroot folder to the IIS inetpub WWWroot
# folder in the container. You don't have to specify the full path to your local
# files because docker already has the logic built-in to reference files and folders
# relative to the docker file location on your system. Also, make note that that
# docker will only recognize forward slashes for file paths - since this is a
# Windows based container instead of Linux.
COPY wwwroot c:/inetpub/wwwroot

# Run some PowerShell commands within the new container to set up the image

# Run the PowerShell commands to remove the default IIS files and create a new
# application pool called TestPool
RUN powershell Remove-Item c:/inetpub/wwwroot/iisstart.htm -force
RUN powershell Remove-Item c:/inetpub/wwwroot/iisstart.png -force
RUN powershell Import-Module WebAdministration
RUN powershell New-WebAppPool -Name 'TestPool'

# Exposes port 80 on the new container image
# Used to open TCP port 80 for allowing an http connection to the website.
# However, this line is commented out, because the IIS container has this port
# already open by default.
#EXPOSE 80

# Sets the main command of the container image
# This tells the image to run a service monitor for the w3svc service.
# When this is specified the container will automatically stop running
# if the w3svc service stopped. This line is commented out because of the
# IIS container already has this entrypoint in place by default.
#ENTRYPOINT ["C:\\ServiceMonitor.exe", "w3svc"]

Vytvoření nového obrázku dockeru

Máte připravený soubor Dockerfile a stažený základní obraz IIS. Nyní je čas vytvořit svůj nový obraz Docker pomocí souboru Docker.

Chcete-li vytvořit nový obrázek, použijte docker build "tag" příkaz. Tento příkaz vytvoří obrázek. V tomto článku níže vidíte, že také používáte -t ** možnost, která nahrazuje část „tag“. Tato možnost vám umožňuje dát vašemu novému obrázku popisný název tagu a také odkazovat na soubor Docker zadáním cesty ke složce, kde se nachází.

Níže vidíte příklad, jak zajistit, aby byla konzola v adresáři C:\Containers, a poté vytvořit nový obraz z Dockerfile v C:\Containers\Container1 adresář.

PS51> cd C:\Containers
PS51> docker build -t container1 .\Container1

Po spuštění můžete vidět průběh příkazu, jak prochází každou instrukcí v souboru dockeru řádek po řádku:

Po dokončení byste nyní měli mít nový obrázek Docker!

Nyní spusťte docker images pro zobrazení dostupných obrázků. Níže můžete vidět příklad kontejneru1 obrázek vytvořen.

Poznámka:docker build —help command je užitečný parametr pro zobrazení podrobných informací o spuštěném příkazu docker.

Spuštění kontejneru Docker

V tomto okamžiku byste měli vytvořit nový obrázek. Je čas roztočit kontejner pomocí tohoto obrázku. Chcete-li vyvolat nový kontejner, použijte docker run příkaz.

docker run příkaz vyvolá nový kontejner Docker založený na container1 obrázek, který jste vytvořili dříve. Příklad toho můžete vidět níže.

Všimněte si, že -d je použit parametr. To říká běhovému modulu dockeru, aby spustil bitovou kopii v odpojeném režimu a poté skončil, když se ukončí kořenový proces používaný ke spuštění kontejneru.

Když docker run dokončí, vrátí ID vytvořeného kontejneru. Níže uvedený příklad zachycuje toto ID do $containerID proměnná, abychom na ni mohli později snadno odkazovat.

PS51> $containerID = docker run -d container1
PS51> $containerID

Jakmile je kontejner vyvolán, spusťte nyní docker ps příkaz. Tento příkaz vám umožňuje zjistit, které kontejnery jsou aktuálně spuštěny pomocí každého obrázku. Všimněte si níže, že běžící obrázek je automaticky vygenerován přezdívkou (busy_habit v tomto případě). Tato přezdívka se někdy používá místo ID kontejneru ke správě kontejneru.

Spuštění kódu uvnitř kontejneru Docker

Nový kontejner je vytvořen z nového obrázku, který jste právě vytvořili. Začněme nyní skutečně používat tento kontejner ke spuštění kódu. Spouštění kódu uvnitř kontejneru Docker se provádí pomocí docker exec příkaz.

V tomto příkladu spusťte docker exec k zobrazení výstupu PowerShellu pro Get-ChildItem příkaz v kontejneru pomocí syntaxe příkazu níže. Tím zajistíte, že pokyny v souboru Dockerfile k odstranění výchozích souborů IIS byly úspěšné.

PS51> docker exec $containerID powershell Get-ChildItem c:\inetpub\wwwroot

Níže můžete vidět, že jediný soubor, který existuje, je index.html což znamená, že výchozí soubory byly odstraněny.

Nyní spusťte ipconfig příkaz v kontejneru, abyste získali místní IP adresu obrázku kontejneru, abyste se mohli pokusit připojit k webu IIS.

PS51> docker exec $containerID ipconfig

Níže můžete vidět ipconfig byl spuštěn v kontejneru, jako by běžel na vašem místním počítači a vrátil všechny informace IP.

Kontrola webu IIS

Nyní je čas odhalit plody vaší práce! Je čas zjistit, zda server IIS spuštěný v kontejneru Docker správně zobrazuje stránku index.html.

Otevřete prohlížeč a vložte adresu IP4 nalezenou pomocí ipconfig do adresního řádku. Pokud je vše v pořádku, měli byste vidět Ahoj světe!! zprávu jako níže.

Kontrola historie Docker

Jeden užitečný příkaz, který lze použít při práci s kontejnery Docker, je docker history příkaz. Ačkoli to nemusí nutně souviset se samotným vytvořením obrázku nebo kontejneru, docker history je užitečný příkaz, který vám umožňuje zkontrolovat změny provedené v obrazu kontejneru.

PS51> docker history container1

Níže můžete vidět tuto docker history vrátí veškerou aktivitu Dockerfile a PowerShell provedenou v kontejneru1 kontejner, se kterým jste pracovali.

Vyčištění běžících obrázků dockeru

Níže uvedené kroky se používají k vyčištění všech zastavených kontejnerů běžících na vašem počítači. Tím se uvolní místo na disku a systémové prostředky.

Spusťte docker ps příkaz k zobrazení seznamu kontejnerů běžících na vašem systému:

PS51> docker ps

Nyní zastavte běžící kontejnery pomocí docker stop příkaz:

PS51> docker stop <image nick name: busy_haibt in my case>
PS51> docker stop <image nick name: unruffled_driscoll in my case>

Nakonec můžete zastavené kontejnery trvale odstranit pomocí docker system prune příkaz.

PS51> docker system prune

Další čtení

  • Vytvoření prvního kontejneru Docker Windows Server Container
  • Jak spravovat svazky Dockeru v systému Windows


Docker
  1. Jak automaticky vytvářet a konfigurovat vlastní obrázky dockeru pomocí Dockerfile – část 3

  2. Jak vytvořit vlastní obrázek z kontejneru Docker

  3. Jak vytvořit Docker Image z kontejneru a Dockerfile

  1. Jak vytvářet, zobrazovat a mazat kontejnery Docker v systému Linux

  2. Jak vytvořit kontejner Anaconda Python Data Science Docker

  3. Vytvořte, označte a nahrajte svůj vlastní obrázek dockeru

  1. Jak použít Dockerfile k vytvoření Docker Image

  2. Jak nasadit kontejner nginx s Dockerem na Linode

  3. Jak sdílet obrázky Docker s ostatními