Używanie Dockerfile do ujawniania portów

Using Dockerfile Expose Ports



Utworzenie niestandardowego obrazu Docker z istniejących obrazów Docker za pomocą Plik dockera . Zwykle ludzie używają minimalnego obrazu podstawowego, takiego jak alpejski lub Ubuntu/debian w tym celu. Załóżmy, że chcesz utworzyć niestandardowy obraz Docker swojej ulubionej aplikacji internetowej napisanej w NodeJS. Aplikacja będzie działać na porcie 8080 . Domyślnie nie będziesz mieć dostępu do aplikacji internetowej na porcie 8080 z komputera hosta. Będziesz musiał powiedzieć Dockerowi, że chcesz odsłonić lub otworzyć port 8080 aby móc uzyskać do niego dostęp z komputera hosta.

W tym artykule pokażę, jak eksponować porty za pomocą Plik dockera na przykładzie z prawdziwego świata. Zacznijmy.







Najpierw musimy stworzyć katalog projektu. W tym katalogu powinieneś przechowywać wszystkie pliki projektu i Plik dockera .



Uruchom następujące polecenie, aby utworzyć katalog projektu mojaaplikacja/ w katalogu HOME użytkowników i przejdź do niego:



$mkdir~/mojaaplikacja&& Płyta CD~/mojaaplikacja

Przygotowanie aplikacji internetowej:

Teraz utwórz katalog źródło/ w środku ~/mojaaplikacja/ katalog za pomocą następującego polecenia:

$mkdirsrc

w źródło/ katalogu, cały kod źródłowy mojej aplikacji NodeJS zostanie zachowany.

Po prostu stworzę prosty app.js plik w źródło/ katalogu i uruchom prosty serwer WWW na porcie 8080 tylko dla demonstracji.

ten src/app.js plik zawiera następujące wiersze kodów:

Pisanie pliku Dockerfile i ujawnianie portów:

Teraz utwórz Plik dockera w ~/mojaaplikacja katalog za pomocą następującego polecenia:

$dotykaćPlik dockera

Teraz wpisz następujące wiersze do Plik dockera i zapisz go. Później omówię, co oznaczają te linie.

Tutaj, OD alpejskich: 3,8 oznacza, użyj alpejski: 3,8 Obraz Dockera jako podstawa nowego obrazu, który będziemy z tego budować Plik dockera .

URUCHOM aktualizację apk oznacza, uruchom aktualizacja apk polecenie w podstawowym obrazie Docker alpejski: 3,8 .

URUCHOM apk add –no-cache nodejs oznacza, uruchom apk dodaj polecenie, aby zainstalować język programowania NodeJS w alpejski: 3,8 Obraz bazowy Dockera.

KOPIUJ ./src /app oznacza, że ​​skopiuj wszystkie pliki z ~/mojaaplikacja/źródło katalog do / aplikacja katalog nowego obrazu Dockera, który zbudujemy za pomocą Plik dockera .

CMD [/usr/bin/node, /app/app.js] oznacza, uruchom /app/app.js plik z nowego kontenera za pomocą węzeł binarny zlokalizowany w /usr/bin/węzeł .

Wreszcie, aby EKSPOZYCJA 8080/tcp oznacza, odsłonić lub otworzyć port TCP 8080 do komputera hosta.

Tworzenie niestandardowego obrazu Docker za pomocą pliku Docker:

Teraz stwórzmy niestandardowy obraz Docker węzeł alpejski: v1 używając Plik dockera które właśnie stworzyliśmy.

Najpierw upewnij się, że jesteś w ~/mojaaplikacja/ katalogu, a następnie uruchom następujące polecenie, aby utworzyć niestandardowy obraz platformy Docker węzeł alpejski: v1 :

$kompilacja dokera-Twęzeł-alpejski:v1 .

Jak widać, niestandardowy obraz Docker węzeł alpejski: v1 jest tworzony. Wymagany podstawowy obraz platformy Docker i pakiety są pobierane z Internetu.

Jak widać, niestandardowy obraz Docker węzeł alpejski: v1 został pomyślnie utworzony.

Testowanie niestandardowego obrazu Docker:

Teraz możemy przetestować niestandardowy obraz Docker węzeł alpejski: v1 bardzo łatwo. Wszystko, co musimy zrobić, to stworzyć kontener z węzeł alpejski: v1 obraz.

Uruchom następujące polecenie, aby utworzyć kontener Docker www od węzeł alpejski: v1 Obraz Dockera:

$Uruchom dokera-D -to --Nazwawww alpine-node:v1

Pojemnik www jest tworzone.

Teraz znajdźmy adres IP www Kontener Docker z następującym poleceniem:

$doker sprawdź www| chwytAdres

Jak widać, w moim przypadku adres IP to 172.17.0.3 . Tak więc aplikacja NodeJS, którą napisałem, powinna być dostępna z przeglądarki internetowej na porcie 8080 tego adresu IP.

Voila! mam dostęp do portu 8080 mojego www Kontener Dockera.

W ten sposób ujawniasz niektóre porty w niestandardowych obrazach Dockera, z których będziesz korzystać Plik dockera .

Ujawnianie portów TCP i UDP za pomocą pliku Dockerfile:

We wcześniejszej części tego artykułu pokazałem, jak odsłonić port TCP za pomocą Plik dockera .

Możesz łatwo odsłonić port TCP (powiedzmy port TCP 53 ) w Twoim Plik dockera z następującym wierszem:

EXPOSE53/tcp

Możesz także odsłonić port UDP (powiedzmy port UDP 53 ) z następującą linią w twoim Plik dockera :

EXPOSE53/udp

Możesz jednocześnie odsłonić port TCP i UDP za pomocą następujących linii w swoim Plik dockera :

EXPOSE53/tcp
EXPOSE53/udp

Jeśli nie określisz, jakiego protokołu (TCP lub UDP) użyć, domyślnie używany jest protokół TCP. Na przykład, jeśli wpiszesz następujący wiersz w swoim Plik dockera :

EXPOSE53

Wtedy Docker przyjmie, że chcesz użyć portu TCP 53.

Ujawnianie wielu portów za pomocą pliku Dockerfile:

Załóżmy, że chcesz utworzyć niestandardowy obraz Docker stosu MEAN. W tym przypadku będziesz uruchamiał serwer HTTP na jakimś porcie (powiedzmy port TCP 80 lub 8080), serwer FTP działający na porcie TCP 21, serwer bazy danych SQL (powiedzmy MySQL) działający na porcie TCP 3306, lub serwer bazy danych NoSQL (powiedzmy MongoDB) działający na porcie TCP 27017 lub 27018, serwer SSH działający na porcie TCP 22. To bardzo dużo portów!

Dobra wiadomość jest taka; możesz odsłonić tyle portów, ile potrzebujesz na swoim niestandardowym obrazie Docker utworzonym za pomocą Plik dockera .

Porty w powyższym przykładzie mogą być widoczne za pomocą następujących linii w twoim Plik dockera :

EXPOSE80/tcp
EXPOSE8080/tcp
EXPOSEdwadzieścia jeden/tcp
EXPOSE22/tcp
EXPOSE3306/tcp
EXPOSE27017/tcp
EXPOSE27018/tcp

Jeśli chcesz, możesz pozostawić specyfikację protokołu, ponieważ Docker domyślnie używa protokołu TCP i zrobić to samo z następującymi wierszami w swoim Plik dockera :

EXPOSE80
EXPOSE8080
EXPOSEdwadzieścia jeden
EXPOSE22
EXPOSE3306
EXPOSE27017
EXPOSE27018

W razie potrzeby możesz mieszać porty TCP i UDP w swoim Plik dockera . Na przykład, jeśli uruchomisz serwer DNS (który działa na porcie UDP 53), wraz z powyższym przykładem, dodasz następujące wiersze do swojego Plik dockera .

EXPOSE80
EXPOSE8080
EXPOSEdwadzieścia jeden
EXPOSE22
EXPOSE53/udp
EXPOSE3306
EXPOSE27017
EXPOSE27018

W ten sposób ujawniasz porty za pomocą Plik dockera . Nauczyć się więcej o Plik dockera i odsłaniając porty za pomocą Plik dockera , przeczytać Plik dockera przewodnik referencyjny w https://docs.docker.com/engine/reference/builder/#expose

Dziękuję za przeczytanie tego artykułu.