Надання мережевих сервісів у Docker

Середній рівень Docker

Mike Metzger

Data Engineering Consultant

Мережеві сервіси

  • Мережеві сервіси слухають певний порт
  • В один момент лише одна програма може слухати комбінацію IP:порт
    • Наприклад, 10.1.2.3:80 означає прослуховування IP 10.1.2.3 на порту 80.
  • Уявімо налагодження різних версій вебсервера, що слухає порт 80
    • Можна запускати лише одну копію застосунку одночасно, якщо він слухає тільки цей порт
Середній рівень Docker

Контейнеризовані сервіси

  • Обгортання застосунку в контейнер означає, що кожен контейнер може слухати цей порт (комбінація IP:порт інша, у кожного контейнера свій IP)
  • Можна запустити кілька копій контейнерів одночасно
  • Але як під'єднатися з хоста до версії застосунку в контейнері?
Середній рівень Docker

Відображення портів

  • Відповідь — відображення портів (port mapping), або переспрямування/трансляція портів
  • Відображення портів приймає з'єднання на заданий IP:порт і автоматично переадресовує його на іншу комбінацію IP:порт
  • У нашому випадку можна відобразити вільний порт на хості на порт 80 у контейнері(ях)
  • Docker Engine може робити це автоматично, якщо його налаштувати

Приклад відображення портів

Середній рівень Docker

Увімкнення відображення портів

  • Щоб увімкнути відображення портів для контейнера, використовуйте команду docker run з прапорцем -p
  • -p <порт хоста>:<порт контейнера>
  • -p 5501:80
  • Для різних портів можна вказати кілька прапорців -p
repl@host:~$ docker run -p 5501:80 nginx

repl@host:~$ docker ps -a
CONTAINER ID IMAGE ... PORTS NAMES 84266724ff47 nginx ... 0.0.0.0:5501->80/tcp, :::5501->80/tcp coiled_elgamal
Середній рівень Docker

Давайте потренуємось!

Середній рівень Docker

Preparing Video For Download...