Порти Docker: конфігурація та використання

watch 41s
views 2

16:50, 02.06.2026

Зміст статті
arrow

  • Вступ
  • Чому мапування портів є важливим
  • Як додати нову прив'язку портів до контейнера, що працює
  • Перезапуск контейнера з оновленими налаштуваннями
  • Кроки:
  • Перезапуск за допомогою Docker Commit
  • Кроки:
  • Як змінювати налаштування Docker на льоту
  • 1. Зупинка контейнера та служби Docker
  • 2. Пошук файлів конфігурації
  • 3. Внесення змін до конфігурації
  • 4. Перевірка оновленої конфігурації
  • 5. Застосування нового прив’язування портів до контейнера, що працює
  • Висновок

Вступ

Docker кардинально змінив підхід розробників до створення, розгортання та управління додатками завдяки використанню контейнеризації. Одним із ключових компонентів роботи з контейнерами Docker є управління портами, які необхідні для зв’язку між вашими контейнеризованими службами та зовнішнім світом. Незалежно від того, чи ви відкриваєте веб-сервер на порту 80, чи власний додаток на 8080, розуміння конфігурації портів Docker є життєво важливим для ефективної оркестрації контейнерів.

Ця стаття розповість вам про мапування портів у Docker — що це таке, чому це важливо та як це налаштувати, навіть для запущених контейнерів.

Чому мапування портів є важливим

Контейнери за замовчуванням ізольовані від хост-системи. Коли контейнеризований додаток внутрішньо слухає на певному порту, цей порт має бути явно прив’язаний до порту на хост-машині, щоб бути доступним зовні.

Приклад: docker run -p 8080:80 nginx

Це прив’язує порт 80 всередині контейнера до порту 8080 на хості, роблячи сервер NGINX доступним через localhost:8080.

Без прив'язки портів:

  • До додатків залишається неможливо отримати доступ з-поза меж мережі Docker.
  • Служби не можуть взаємодіяти між контейнерами або системами.
  • Розробка та налагодження стають складнішими.

Як додати нову прив'язку портів до контейнера, що працює

Docker не підтримує додавання нових прив'язок портів безпосередньо до контейнера, що вже працює. Прапорець -p працює лише під час фази створення контейнера (docker run).

Щоб відкрити новий порт:

  • Ви повинні перестворити контейнер із новою конфігурацією портів.
  • Як альтернатива, використовуйте обхідний шлях, наприклад, за допомогою Docker commit та перезапуску (описано нижче).

Перезапуск контейнера з оновленими налаштуваннями

Якщо ви хочете оновити прив'язку портів:

Кроки:

  1. Зупиніть контейнер:
    docker stop <container_name_or_id>
  2. Видаліть контейнер (дані залишаться недоторканими, якщо використовуються томи):
    docker rm <container_name_or_id>
  3. Створіть його заново з новими прив’язками портів:
    docker run -d -p 8080:80 --name my-nginx nginx Переконайтеся, що ви зберегли всі необхідні томи, змінні середовища або мережі під час повторного створення контейнера.

Перезапуск за допомогою Docker Commit

Якщо у контейнері, що працює, є власні налаштування, які ви не хочете втратити:

Кроки:

  1. Збережіть стан контейнера у новому образі:
    docker commit <container_id> myimage:withports
  2. Запустіть новий контейнер із зафіксованого образу з оновленими портами:
    docker run -d -p 8080:80 --name new_container myimage:withports Цей метод дозволяє зберегти поточну файлову систему контейнера, відкриваючи при цьому нові порти.

Як змінювати налаштування Docker на льоту

Хоча Docker не дозволяє змінювати порти контейнерів у режимі реального часу, ви можете внести більш широкі зміни в конфігурацію Docker для майбутньої поведінки контейнерів або з метою налагодження.

1. Зупинка контейнера та служби Docker

Зупиніть контейнер, а потім демон Docker (може знадобитися sudo):

docker stop <container_name> sudo systemctl stop docker

2. Пошук файлів конфігурації

Налаштування Docker часто знаходяться в:

  • Linux: /etc/docker/daemon.json
  • Windows/Mac (Docker Desktop): через графічний інтерфейс або ~/.docker/config.json

3. Внесення змін до конфігурації

Відредагуйте файл daemon.json, щоб визначити власні відповідності портів або експериментальні функції.

Приклад: 


"iptables": true, 
"default-address-pools": [ 

"base": "10.10.0.0/16", 
"size": 24


}

Примітка: Прив’язки портів тут безпосередньо не змінюються, але можна налаштувати інші параметри мережевої роботи.

4. Перевірка оновленої конфігурації

Перевірте на наявність синтаксичних помилок:

sudo dockerd --config-file /etc/docker/daemon.json --debug

У разі успіху перезапустіть службу Docker:

sudo systemctl start docker

5. Застосування нового прив’язування портів до контейнера, що працює

Після перезапуску Docker:

  • Створіть новий контейнер із потрібним прив’язуванням портів.
  • Використовуйте docker exec, docker cp або підключення томів для перенесення даних зі старого контейнера, якщо це потрібно.

Висновок

Прив'язка портів у Docker є основою для розгортання доступних мережевих додатків. Хоча Docker не дозволяє змінювати порти на льоту для активних контейнерів, існують надійні робочі процеси для переконфігурації контейнерів із новими налаштуваннями, включаючи фіксацію контейнерів та їх повторне створення. Розуміння цих практик гарантує підтримку безперебійної роботи, доступності та масштабованості в контейнеризованих середовищах.

Поділитися

Чи була ця стаття корисною для вас?

Популярні пропозиції VPS

-10%

CPU
CPU
3 Epyc Cores
RAM
RAM
2 GB
Space
Space
25 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 2048 Windows

9.9

При оплаті за рік

-7.1%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 4096 Windows

21

При оплаті за рік

-24.7%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
4 TB
KVM-SSD 4096 Metered Linux

31

При оплаті за рік

-21.4%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
500 GB
wKVM-SSD 8192 HK Windows

67

При оплаті за рік

-20.4%

CPU
CPU
2 Xeon Cores
RAM
RAM
2 GB
Space
Space
30 GB SSD
Bandwidth
Bandwidth
300 GB
KVM-SSD 2048 HK Linux

18

При оплаті за рік

-13.3%

CPU
CPU
2 Xeon Cores
RAM
RAM
1 GB
Space
Space
20 GB SSD
Bandwidth
Bandwidth
300 GB
KVM-SSD 1024 HK Linux

11.33

При оплаті за рік

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 4096 Linux

12.07

При оплаті за рік

-7.2%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
40 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 1024 Linux

5.92

При оплаті за рік

-9.6%

CPU
CPU
8 Xeon Cores
RAM
RAM
32 GB
Space
Space
200 GB SSD
Bandwidth
Bandwidth
12 TB
wKVM-SSD 32768 Metered Windows

156

При оплаті за рік

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
30 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 2048 Linux

8.3

При оплаті за рік

Інші статті на цю тему

cookie

Чи приймаєте ви файли cookie та політику конфіденційності?

Ми використовуємо файли cookie, щоб забезпечити вам найкращий досвід роботи на нашому сайті. Якщо ви продовжуєте користуватися сайтом, не змінюючи налаштувань, вважайте, що ви згодні на отримання всіх файлів cookie на сайті HostZealot.