Použití Dockerfile k odhalení portů

Using Dockerfile Expose Ports



Je opravdu snadné vytvořit vlastní obrázek Dockeru z existujících obrázků Dockeru pomocí Dockerfile . Lidé obvykle používají minimální základní obrázek, jako je vysokohorský nebo ubuntu/debian za tím účelem. Řekněme, že chcete vytvořit vlastní obrázek Dockeru vaší oblíbené webové aplikace napsaný v NodeJS. Aplikace poběží na portu 8080 . Ve výchozím nastavení nebudete mít přístup k webové aplikaci na portu 8080 z hostitelského počítače. Budete muset Dockerovi říct, že chcete vystavit nebo otevřít port 8080 abyste k němu měli přístup z hostitelského počítače.

V tomto článku vám ukážu, jak odhalit porty pomocí Dockerfile s příkladem ze skutečného světa. Začněme.







Nejprve musíme vytvořit adresář projektu. V tomto adresáři byste měli uchovávat všechny soubory projektu a Dockerfile .



Spuštěním následujícího příkazu vytvořte adresář projektu myapp/ v adresáři HOME uživatelů a přejděte do něj:



$mkdir~/myapp&& CD~/myapp

Příprava webové aplikace:

Nyní vytvořte adresář src/ uvnitř ~/myapp/ adresář s následujícím příkazem:

$mkdirsrc

V src/ adresář, bude zachován veškerý zdrojový kód mé aplikace NodeJS.

Prostě vytvořím jednoduchý app.js soubor v souboru src/ adresáře a spusťte na portu jednoduchý webový server 8080 jen pro ukázku.

The src/app.js soubor obsahuje následující řádky kódů:

Zápis dockerfile a vystavení portů:

Nyní vytvořte a Dockerfile v ~/myapp adresář s následujícím příkazem:

$dotekDockerfile

Nyní zadejte do následujících řádků Dockerfile a ulož to. Co tyto řádky znamenají, proberu později.

Tady, Z alpských: 3.8 znamená použít alpské: 3,8 Docker image jako základ pro nový image, který z toho budeme budovat Dockerfile .

RUN aktualizace APK znamená spustit aktualizace apk příkaz v základním obrazu Dockeru alpské: 3,8 .

RUN apk add –no-cache nodejs znamená spustit apk přidat příkaz k instalaci programovacího jazyka NodeJS do souboru alpské: 3,8 Základní obrázek Dockeru.

KOPÍROVAT ./src /app znamená zkopírovat všechny soubory z ~/myapp/src adresář do /aplikace adresář nového obrazu Dockeru, který vytvoříme pomocí Dockerfile .

CMD [/usr/bin/node, /app/app.js] znamená spustit /app/app.js soubor z nového kontejneru pomocí uzel binární umístěný v /usr/bin/uzel .

Nakonec k EXPOSE 8080/tcp znamená vystavit nebo otevřít port TCP 8080 do hostitelského počítače.

Vytvoření vlastního obrázku Dockeru pomocí Dockerfile:

Nyní vytvoříme vlastní obrázek Dockeru alpský uzel: v1 za použití Dockerfile které jsme právě vytvořili.

Nejprve se ujistěte, že jste v ~/myapp/ adresáře a poté spusťte následující příkaz k vytvoření vlastní bitové kopie Dockeru alpský uzel: v1 :

$docker build-talpský uzel: v1.

Jak vidíte, vlastní obrázek Dockeru alpský uzel: v1 se vytváří. Požadovaný základní obrázek a balíčky Dockeru se stahují z internetu.

Jak vidíte, vlastní obrázek Dockeru alpský uzel: v1 je úspěšně vytvořen.

Testování vlastního obrázku Dockeru:

Nyní můžeme otestovat vlastní obrázek Dockeru alpský uzel: v1 velmi lehce. Jediné, co musíme udělat, je vytvořit z něj kontejner alpský uzel: v1 obraz.

Spuštěním následujícího příkazu vytvořte kontejner Docker www z alpský uzel: v1 Docker obrázek:

$docker run-d -to --názevwww alpský uzel: v1

Kontejner www je vytvořen.

Nyní zjistíme IP adresu www Docker kontejner s následujícím příkazem:

$docker inspect www| rukojeťAdresa

Jak vidíte, v mém případě je IP adresa 172.17.0.3 . Takže aplikace NodeJS, kterou jsem napsal, by měla být přístupná z webového prohlížeče na portu 8080 této IP adresy.

Voila! Mám přístup k portu 8080 mého www Docker kontejner.

V zásadě tak odhalíte určité porty ve svých vlastních obrázcích Dockeru, pomocí kterých budete stavět Dockerfile .

Vystavení portů TCP a UDP pomocí Dockerfile:

V dřívější části tohoto článku jsem vám ukázal, jak vystavit port TCP pomocí Dockerfile .

Můžete snadno vystavit port TCP (řekněme port TCP 53 ) ve vašem Dockerfile s následujícím řádkem:

ODHALIT53/tcp

Můžete také vystavit port UDP (řekněme port UDP 53 ) s následujícím řádkem ve vašem Dockerfile :

ODHALIT53/udp

Můžete zobrazit TCP a UDP port současně s následujícími řádky ve vašem Dockerfile :

ODHALIT53/tcp
ODHALIT53/udp

Pokud neurčíte, jaký protokol (TCP nebo UDP) použít, použije se ve výchozím nastavení protokol TCP. Napíšete -li například následující řádek do souboru Dockerfile :

ODHALIT53

Poté Docker předpokládá, že chcete použít port TCP 53.

Vystavení více portů pomocí Dockerfile:

Řekněme, že chcete vytvořit vlastní obrázek Dockeru MEAN stack. V tomto případě budete provozovat HTTP server na nějakém portu (řekněme TCP port 80 nebo 8080), FTP server, který běží na TCP portu 21, databázový server SQL (řekněme MySQL), který běží na TCP portu 3306, nebo databázový server NoSQL (řekněme MongoDB), který běží na portu TCP 27017 nebo 27018, server SSH, který běží na portu TCP 22. To je spousta portů!

Dobrou zprávou je; na svém vlastním obrazu Dockeru vytvořeném pomocí můžete vystavit tolik portů, kolik potřebujete Dockerfile .

Porty ve výše uvedeném příkladu lze vystavit pomocí následujících řádků ve vašem Dockerfile :

ODHALIT80/tcp
ODHALIT8080/tcp
ODHALITdvacet jedna/tcp
ODHALIT22/tcp
ODHALIT3306/tcp
ODHALIT27017/tcp
ODHALIT27018/tcp

Pokud chcete, můžete ponechat specifikaci protokolu, protože Docker ve výchozím nastavení používá TCP a totéž proveďte s následujícími řádky ve vašem Dockerfile :

ODHALIT80
ODHALIT8080
ODHALITdvacet jedna
ODHALIT22
ODHALIT3306
ODHALIT27017
ODHALIT27018

Pokud potřebujete, můžete ve svém Dockerfile . Pokud například spustíte server DNS (který běží na portu UDP 53), přidáte do výše uvedeného příkladu následující řádky Dockerfile .

ODHALIT80
ODHALIT8080
ODHALITdvacet jedna
ODHALIT22
ODHALIT53/udp
ODHALIT3306
ODHALIT27017
ODHALIT27018

Porty tedy odhalíte pomocí Dockerfile . Chcete -li se dozvědět více o Dockerfile a vystavení portů pomocí Dockerfile , číst Dockerfile referenční příručka na https://docs.docker.com/engine/reference/builder/#expose

Děkujeme za přečtení tohoto článku.