Переадресация портов в Docker — это процесс, который позволяет нам предоставить доступ к порту контейнера в хост-системе Docker. Это позволяет нам запускать приложение в изолированной среде, а также делать его доступным снаружи контейнера на пользовательском компьютере.
Этот пост продемонстрирует:
- Как перенаправить порт в Docker, используя тег «-p» или «-publish»
- Как перенаправить порт в Docker с помощью Docker Compose
- Как перенаправить порт в определенную сеть
- Заключение
Как перенаправить порт в Docker, используя тег «-p» или «-publish»
Чтобы перенаправить порт в Docker, пользователю необходимо опубликовать порт контейнера на хосте Docker. Для этого запустите контейнер на хосте докера, используя команду « -п ' или ' -публиковать тег в теге « запуск докера команда.
Для правильной демонстрации следуйте приведенным ниже инструкциям.
Шаг 1: Создайте Dockerfile
Сначала создайте файл и задайте его имя как « Докерфайл ». Этот файл содержит текстовые инструкции по созданию шаблона контейнера Docker. Например, давайте закрепим простую программу на Golang, используя приведенный ниже фрагмент в Dockerfile:
ИЗ Голанга: 1,8
РАБОЧИЙ ДИАПАЗОН / идти / источник / приложение
КОПИРУЙТЕ main2.go.
БЕГИТЕ, идите строить -О веб сервер .
РАЗОБЛАЧАТЬ 8080
КМД [ './веб сервер' ]
В данном фрагменте:
- « ОТ Команда «используется для установки базового изображения.
- « РАБОЧИЙ ДИАПАЗОН » определяет рабочий каталог контейнера.
- « КОПИРОВАТЬ Команда ” создаст копию программного файла по пути, указанному контейнером.
- « БЕГАТЬ ” выполнит указанную команду в контейнере.
- « РАЗОБЛАЧАТЬ Команда » указывает порт, на котором будет прослушиваться контейнер.
- « КМД » указывает исполняемые точки контейнера.
Шаг 2. Создайте программу на Голанге
Затем создайте еще один файл с именем « main2.go » и вставьте приведенную ниже программу Golang, которая печатает простую строку на порту « 8080 »:
пакет основной
Импортировать (
'ФМТ'
'бревно'
'сеть/http'
)
обработчик функций ( В http.ResponseWriter, г * http.Запрос ) {
html := `
ДОКТИП html >
< HTML >
< голова >
< заголовок > Привет, Голанг ! заголовок >
< стиль >
тело {
фоновый цвет: #D2B48C;
}
.контейнер {
выравнивание текста: по центру;
отступ: 50 пикселей;
}
стиль >
голова >
< тело >
< div сорт '=' 'контейнер' >
< ч1 > Привет ! Добро пожаловать в учебник LinuxHint ч1 >
div >
тело >
HTML >`
w.Header ( ) .Набор ( 'Тип содержимого' , 'текст/html' )
fmt.Fprint ( В , HTML )
}
главная функция ( ) {
http.HandleFunc ( '/' , обработчик )
журнал.Фатальный ( http.ListenAndServe ( '0.0.0.0:8080' , ноль ) )
}
Шаг 3. Создайте снимок контейнера
Теперь создайте снимок контейнера из указанного выше файла Dockerfile. Для этого сначала перейдите в каталог, в котором создан файл Dockerfile, используя команду « cd <путь к рабочему каталогу> » команда:
Затем сгенерируйте новый образ контейнера с помощью данной команды:
сборка докера -т голанг-img .
Данный результат показывает, что образ создается в соответствии с предоставленным контекстом сборки.
Шаг 4. Переадресация хост-порта на порт контейнера
Теперь запустите контейнер и перенаправьте порт хоста на порт контейнера, чтобы получить доступ к приложению dockerize вне контейнера на локальном компьютере. Для этого запустите «docker run –name
Здесь « -п Флаг «используется для публикации порта выполнения контейнера на хосте докера:
Шаг 5: Проверка
Для проверки просмотрите запущенные контейнеры, используя « докер, пс »:
докер псВ приведенном ниже результате контейнерное приложение прослушивает доступные сетевые интерфейсы. 0.0.0.0 ” на опубликованном порте “ 8080 ». Это означает, что порт перенаправляется работающему приложению на хост-компьютере:
Теперь запустите браузер и перейдите к « http://localhost:8080/ » и проверьте, применяется ли метод переадресации портов и доступно ли контейнерное приложение за пределами контейнера в хост-системе:
Здесь мы успешно перенаправили порт хоста на порт контейнера, и приложение доступно на хосте докера.
Как перенаправить порт в Docker с помощью Docker Compose
Чтобы перенаправить порт контейнера на хост для доступа к контейнерному приложению снаружи контейнера, пользователь может использовать команду « порт » в файле Compose yaml. Docker Compose — это служба Docker, которая позволяет нам запускать разные службы и приложения в разных контейнерах. Используя ' docker-compose.yml », пользователь также может перенаправить порт контейнера на хост-компьютер и подключить приложение к внешнему миру.
Ознакомьтесь с приведенной ниже процедурой для иллюстраций.
Шаг 1: Создайте файл создания
Сначала создайте файл с именем « docker-compose.yml » и добавьте в файл следующее содержимое:
версия: '3'услуги:
сеть:
строить: .
порты:
- 8080 : 8080
В приведенном выше фрагменте « порты Ключ «используется для подключения хоста к порту контейнера. Здесь первое значение — это порт хоста, а второе значение — порт контейнера.
Шаг 2. Запустите приложение.
После указания инструкций в файле компоновки запустите приложение в контейнере с помощью команды « докер-составить » команда:
докер-составить
Шаг 3: Проверка
Для проверки перечислите контейнеры создания, используя « docker-compose PS » команда:
docker-compose пс -а
Чтобы проверить, доступен ли контейнер на хост-компьютере, перейдите к « http://localhost:8080/ URL-адрес. Здесь вы можете видеть, что мы эффективно перенаправили порт контейнера на хост:
Как перенаправить порт в определенную сеть
Чтобы перенаправить порт контейнера в определенную сеть, пользователю необходимо указать сеть, в которой он хочет получить доступ к контейнеру, используя параметр « -сеть ' вариант. Посмотрите на данные шаги для демонстрации.
Шаг 1: Создайте сеть
Создайте новую сеть, используя « сеть докеров создает <сетевое имя> команда. По умолчанию эта сеть будет использовать драйвер моста:
сеть докеров создать сеть mygo
Для просмотра сетей Docker используйте команду « сеть докеров ls » команда:
сеть докеров лсЗдесь мы успешно создали « mygo-сеть », который использует « мост ' Водитель:
Шаг 2. Составьте карту сети
Чтобы запустить контейнер и получить доступ к нему в конкретной сети с использованием метода переадресации портов, используйте следующую команду:
запуск докера -п 8080 : 8080 --сеть mygo-сеть в golang-imgВ данной команде « -п Опция публикует контейнер на указанном порту указанной сети. Здесь « -сеть Опция » используется для определения сети докера:
Для проверки снова перейдите к « http://localhost:8080 » порт и проверяем, доступен ли контейнер в указанной сети или нет:
Приведенный выше вывод показывает, что мы эффективно перенаправили порт контейнера в определенную сеть.
Примечание: При использовании «хостовой» сети пользователю не нужно публиковать порт из контейнера на хост с помощью « -п ' или ' -публиковать ' вариант.
Перенаправить порт в определенную сеть с помощью Docker Compose
Добавьте следующий фрагмент в файл « docker-compose.yml ' файл. В приведенном ниже фрагменте « сети Ключ ” используется для указания сети:
версия: '3'услуги:
сеть:
строить: .
порты:
- 8080 : 8080
Теперь запустите приложение в контейнере, используя команду « докер-составить » команда:
докер-составить
Мы рассмотрели методы переадресации портов в Docker.
Заключение
Чтобы перенаправить порт в Docker для доступа к приложению dockerize за пределами контейнера, пользователь может использовать команду « -п ' или ' -публиковать опция в разделе « запуск докера ” или пользователь может использовать команду “ порты » в файле создания Docker. Чтобы получить доступ к контейнеру в определенной сети, пользователь может перенаправить порт контейнера в сети, используя команду « --network <сеть> ' вариант. В этом блоге продемонстрированы методы перенаправления портов в Docker.