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

-5.6%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
60 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 2048 Windows

13.7

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

-15.6%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
20 GB SSD
Bandwidth
Bandwidth
30 Mbps
DDoS Protected SSD-KVM 1024 Linux

38

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

-12.3%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-wKVM-SSD 16384 Windows

237

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

-9.3%

CPU
CPU
6 Epyc Cores
RAM
RAM
16 GB
Space
Space
150 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 16384 Windows

54.49

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

-10%

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

30.3

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

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
aiKVM-NVMe 4096 Linux

16.88

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

-15.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
60 Mbps
DDoS Protected SSD-wKVM 4096 Windows

73

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

-8.8%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
400 GB HDD
Bandwidth
Bandwidth
300 Gb
wKVM-HDD HK 16384 Windows

45.91

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

-9.2%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-wKVM-SSD 4096 Windows

72

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

-8.9%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
400 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 16384 Windows

56

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

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

cookie

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

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