Порти 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

-21%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
8 TB
wKVM-SSD 8192 Metered Windows

65

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

-7.9%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
200 GB HDD
Bandwidth
Bandwidth
300 Gb
wKVM-HDD HK 8192 Windows

25.92

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

-15.5%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
80 Mbps
DDoS Protected SSD-KVM 8192 Linux

95

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

-20.6%

CPU
CPU
6 Xeon Cores
RAM
RAM
8GB
Space
Space
100GB SSD
Bandwidth
Bandwidth
500GB
KVM-SSD 8192 HK Linux

59

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

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 4096 Linux

15

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

-9.9%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
40 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 1024 Linux

4.96

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

-22.2%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
300 GB
KVM-SSD 4096 HK Linux

33

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

-15.4%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
100 Mbps
DDoS Protected SSD-wKVM 16384 Windows

130

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

-10%

CPU
CPU
2 Epyc Cores
RAM
RAM
1 GB
Space
Space
10 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 1024 Linux

7.1

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

-9.9%

CPU
CPU
3 Epyc Cores
RAM
RAM
2 GB
Space
Space
20 GB NVMe
Bandwidth
Bandwidth
Unlimited
aiKVM-NVMe 2048 Linux

8.97

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

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

cookie

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

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