Как да препратите порт в Docker

Kak Da Prepratite Port V Docker



Docker е добре харесвана платформа за докеризация, която докеризира приложения и софтуер в изолирана среда, известна като контейнер. Докато изпълняват приложения в контейнери, потребителите обикновено трябва да имат достъп до контейнеризираното приложение извън контейнера. За тази цел потребителите трябва да приложат техниката за пренасочване на портове.

Пренасочването на портове в Docker е процес, който ни позволява да изложим порта на контейнера в хост системата на Docker. Това ни позволява да стартираме приложението в изолирана среда и също така да го направим достъпно извън контейнера на потребителска машина.

Тази публикация ще демонстрира:







Как да пренасочите порт в Docker с помощта на етикет „-p“ или „–publish“.

За да препрати порт в Docker, потребителят трябва да публикува порта на контейнера на хоста на Docker. За тази цел стартирайте контейнера на докер хоста, като използвате „ -стр ' или ' – публикуване ” етикет в „ докер изпълнение ” команда.



За правилна демонстрация следвайте инструкциите по-долу.



Стъпка 1: Направете Dockerfile

Първо създайте файл и задайте името му като „ Докер файл ”. Този файл съдържа текстовите инструкции за създаване на шаблона на контейнера Docker. Например, нека докеризираме простата програма Golang, като използваме фрагмента по-долу в Dockerfile:





ОТ golang: 1.8

WORKDIR / отивам / src / ап

КОПИРАЙТЕ main2.go .

БЯГАЙТЕ, отидете да строите уеб сървър .

ИЗЛОЖИ 8080

CMD [ './уеб сървър' ]

В дадения фрагмент:

  • ОТ ” командата се използва за задаване на основното изображение.
  • WORKDIR ” дефинира работната директория на контейнера.
  • КОПИЕ ” ще създаде копие на програмния файл в указания от контейнера път.
  • БЯГАЙТЕ ” ще изпълни посочената команда в контейнера.
  • ИЗЛОЖИ ” командата указва порта, където ще се слуша контейнерът.
  • CMD ” указва изпълнимите точки на контейнера.

Стъпка 2: Създайте програма Golang

След това създайте друг файл с име „ main2.go ' и поставете предоставената по-долу програма Golang, която отпечатва прост низ на порт ' 8080 ”:



основен пакет

импортиране (

'fmt'

'дневник'

'net/http'

)

манипулатор на функции ( в http.ResponseWriter, r * http.Заявка ) {

html := `

DOCTYPE html >

< html >

< глава >

< заглавие > Здравей Голанг ! заглавие >

< стил >

тяло {

Цвят на фона: #D2B48C;

}

.контейнер {

подравняване на текст: център;

подложка: 50px;

}

стил >

глава >

< тяло >

< див клас = 'контейнер' >

< h1 > Здравейте ! Добре дошли в урока за LinuxHint h1 >

див >

тяло >

html >`

w.Header ( ) .Комплект ( 'Тип съдържание' , 'текст/html' )

fmt.Fprint ( в , html )

}

основна функция ( ) {

http.HandleFunc ( '/' , манипулатор )

лог.Фатално ( http.ListenAndServe ( '0.0.0.0:8080' , нула ) )

}

Стъпка 3: Генериране на моментна снимка на контейнера

Сега генерирайте моментна снимка за контейнера от посочения по-горе Dockerfile. За тази цел първо отидете до директорията, където е създаден Dockerfile, като използвате „ cd <път до работната директория> ” команда:

След това генерирайте новото изображение на контейнера, като използвате дадената команда:

изграждане на докер -T golang-img.

Даденият резултат показва, че изображението е създадено според предоставения контекст на компилация.

Стъпка 4: Пренасочване на порта на хоста към порта на контейнера

Сега изпълнете контейнера и препратете хост порта към порта на контейнера за достъп до приложението за докеризиране извън контейнера на локална машина. За целта стартирайте „docker run –name -p : ” команда:

докер изпълнение -- име върви-продължи -стр 8080 : 8080 golang-img

Тук „ -стр ” флагът се използва за публикуване на порта за изпълнение на контейнера на докер хоста:

Стъпка 5: Проверка

За проверка вижте работещите контейнери, като използвате „ докер ps ”:

докер пс

В резултата по-долу контейнеризираното приложение слуша налични мрежови интерфейси ' 0.0.0.0 'на публикуван порт' 8080 ”. Това означава, че портът се препраща към работещото приложение на хост машината:

Сега стартирайте браузъра и отворете „ http://localhost:8080/ ” и проверете дали техниката за препращане на портове е приложена или не и дали контейнеризираното приложение е достъпно извън контейнера в хост системата:

Тук успешно препратихме порта на хоста към порта на контейнера и приложението е достъпно на хоста на докера.

Как да препратите порт в Docker с помощта на Docker Compose

За да препрати порта на контейнера към хоста за достъп до контейнеризираното приложение извън контейнера, потребителят може да използва „ порт ” във файла за създаване на yaml. Docker compose е Docker услуга, която ни позволява да изпълняваме различни услуги и приложения в различни контейнери. Използвайки ' docker-compose.yml ”, потребителят може също така да препрати порта на контейнера към хост машината и да има връзка на приложението с външния свят.

Вижте процедурата по-долу за илюстрации.

Стъпка 1: Направете Compose File

Първо, генерирайте файл с име „ docker-compose.yml ” и добавете следното съдържание към файла:

версия: '3'

услуги:

уеб:

изграждане: .

портове:

- 8080 : 8080

В горния фрагмент „ пристанища ” се използва за свързване на хоста към порта на контейнера. Тук първата стойност е портът на хоста, а втората стойност е портът на контейнера.

Стъпка 2: Стартирайте приложението

След като посочите инструкциите във файла за композиране, стартирайте приложението в контейнер, като използвате „ докер-съставяне ” команда:

докер-съставяне

Стъпка 3: Проверка

За потвърждение избройте контейнерите за композиране, като използвате „ docker-compose ps ” команда:

докер-съставяне пс

За да проверите дали контейнерът е достъпен на хост машината, отворете „ http://localhost:8080/ ” URL. Тук можете да видите, че ефективно сме препратили порта на контейнера на хоста:

Как да препратите порт към конкретна мрежа

За да препрати порт на контейнер към конкретна мрежа, потребителят трябва да посочи мрежата, в която иска да има достъп до контейнера, като използва „ – мрежа ” опция. Вижте дадените стъпки за демонстрация.

Стъпка 1: Създайте мрежа

Създайте нова мрежа, като използвате „ docker мрежа създаде ” команда. По подразбиране тази мрежа ще използва драйвер за мост:

docker мрежа създайте mygo-мрежа

За да видите Docker мрежите, използвайте „ докер мрежа ls ” команда:

докер мрежа ls

Ето, ние успешно създадохме ' mygo-мрежа ', който използва' мост ” шофьор:

Стъпка 2: Карта на мрежата

За да стартирате и получите достъп до контейнера в конкретната мрежа, като използвате техниката за пренасочване на портове, използвайте командата по-долу:

докер изпълнение -стр 8080 : 8080 --мрежа mygo-мрежа golang-img

В дадената команда „ -стр ” публикува контейнера на определен порт на определената мрежа. Тук „ – мрежа ” се използва за дефиниране на докер мрежата:

За проверка отново отворете „ http://localhost:8080 ” и проверете дали контейнерът е достъпен в посочената мрежа или не:

Горният резултат показва, че ние ефективно сме препратили порта на контейнера в конкретна мрежа.

Забележка: Докато използва мрежата „хост“, потребителят не трябва да публикува порта от контейнер към хост, като използва „ -стр ' или ' – публикуване ” опция.

Пренасочване на порт към конкретна мрежа с помощта на Docker Compose

Добавете следния фрагмент в „ docker-compose.yml ” файл. Във фрагмента по-долу „ мрежи ” се използва за указване на мрежата:

версия: '3'
услуги:

уеб:
изграждане: .
портове:
- 8080 : 8080

Сега стартирайте приложението в контейнер, като използвате „ докер-съставяне ” команда:

докер-съставяне

Разгледахме методите за пренасочване на портове в Docker.

Заключение

За да препрати порта в Docker за достъп до приложението за dockerize извън контейнера, потребителят може или да използва „ -стр ' или ' – публикуване ” опция в „ докер изпълнение ' или потребителят може да използва ' пристанища ” във файла за композиране на Docker. За да получи достъп до контейнера в конкретна мрежа, потребителят може да препрати порта на контейнера в мрежа, като използва „ –мрежа <мрежа> ” опция. Този блог демонстрира техниките за препращане на портове в Docker.