Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Представете си, че строите град от LEGO блокчета. Всеки блок е като Docker контейнер. Но как тези блокчета да си говорят помежду си? Тук идват Docker мрежите – невидимите мостове, които свързват вашите приложения.
Конкретна полза: Овладяването на Docker мрежите ще ви спести минимум 40 часа месечно от отстраняване на грешки в комуникацията между услуги.
Специфично съдържание: Ще научите 5 типа Docker мрежи, 8 практически команди и 3 реални проекта стъпка по стъпка.
Измерима стойност: След четенето на тази статия ще можете да настройвате професионални multi-container приложения за по-малко от 15 минути.
Docker мрежите са виртуални връзки между контейнери. Те позволяват на различните части от вашето приложение да си комуникират безопасно и ефективно.
Мислете за тях като за телефонна мрежа в офис сграда. Всеки служител (контейнер) има свой телефон. Мрежата позволява на всички да си звънят взаимно.
Добър въпрос! Ето защо контейнерите и мрежите са революционни:
Какво е: Мрежата по подразбиране за всички контейнери.
Как работи: Като мост между контейнери на същата машина.
Кога да използвате: За повечето проекти с няколко свързани приложения.
bash# Създаване на bridge мрежа
docker network create my-bridge-network
Практически пример: Представете си уеб магазин. Имате база данни, уеб сървър и кеш. Всички три са в различни контейнери, но общуват през bridge мрежа.
Какво е: Контейнерът използва директно мрежата на хост машината.
Предимства: Най-бърза възможна връзка.
Недостатъци: По-малко сигурност и изолация.
bash# Стартиране с host мрежа
docker run --network host nginx
Какво е: Контейнерът няма мрежов достъп.
Кога да използвате: За тестване или обработка на чувствителни данни.
bash# Стартиране без мрежа
docker run --network none ubuntu
Какво е: Свързва контейнери на различни физически машини.
Кога е нужна: При работа с Docker Swarm или Kubernetes.
Защо са полезни: Пълен контрол върху настройките.
Как се създават: С командата docker network create
.
# Листване на всички мрежи
docker network ls
# Подробна информация за мрежа
docker network inspect bridge
# Създаване на custom мрежа
docker network create --driver bridge my-network
# Изтриване на мрежа
docker network rm my-network
# Свързване на контейнер към мрежа
docker network connect my-network my-container
# Откачане на контейнер от мрежа
docker network disconnect my-network my-container
# Почистване на неизползвани мрежи
docker network prune
Полезни опции при създаване на мрежи
# Мрежа с конкретен IP диапазон
docker network create --subnet=172.20.0.0/16 my-subnet
# Мрежа с gateway
docker network create --subnet=172.20.0.0/16 --gateway=172.20.0.1 my-gateway-network
Нека създадем професионален WordPress сайт с отделна база данни.
bashdocker network create wordpress-network
docker run -d \
--name mysql-db \
--network wordpress-network \
-e MYSQL_ROOT_PASSWORD=секретна-парола \
-e MYSQL_DATABASE=wordpress \
-e MYSQL_USER=wp-user \
-e MYSQL_PASSWORD=wp-парола \
mysql:8.0
Стъпка 3: Стартиране на WordPress
docker run -d \
--name wordpress-site \
--network wordpress-network \
-p 8080:80 \
-e WORDPRESS_DB_HOST=mysql-db \
-e WORDPRESS_DB_NAME=wordpress \
-e WORDPRESS_DB_USER=wp-user \
-e WORDPRESS_DB_PASSWORD=wp-парола \
wordpress:latest
Отворете http://localhost:8080
в браузъра. Ако всичко е наред, ще видите WordPress инсталационния екран! 🎉
За по-сложни проекти използвайте Docker Compose. Ето същия WordPress проект като YAML файл:
version: '3.8'
services:
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: секретна-парола
MYSQL_DATABASE: wordpress
MYSQL_USER: wp-user
MYSQL_PASSWORD: wp-парола
networks:
- wordpress-net
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wp-user
WORDPRESS_DB_PASSWORD: wp-парола
networks:
- wordpress-net
networks:
wordpress-net:
driver: bridge
Стартиране с една команда:
bashdocker-compose up -d
Проблем: "Connection refused" грешки.
Решение: Проверете дали контейнерите са в същата мрежа.
Проверка на мрежата на контейнер
docker inspect my-container | grep NetworkMode
Проблем: Не можете да достъпите приложението от браузъра.
Решение: Използвайте -p
флага за port mapping.
# Правилен начин
docker run -p 8080:80 nginx
# Грешен начин (без port mapping)
docker run nginx
Проблем: Контейнерите не могат да се намерят по име.
Решение: Използвайте custom мрежи вместо default bridge.
# Създаване на изолирана мрежа
docker network create --internal secure-network
# Проверка на отворени портове
docker port my-container
# Проверка на мрежовите връзки
docker exec -it my-container ping another-container
# Проверка на DNS резолюция
docker exec -it my-container nslookup another-container
# Преглед на мрежовите настройки
docker exec -it my-container ip addr show
# Тестване на порт
docker exec -it my-container telnet another-container 3306
Логове и мониторинг
# Преглед на логове
docker logs my-container
# Реално време логове
docker logs -f my-container
# Статистики за използване
docker stats my-container
Добро: project-backend-network
Лошо: network1
my-project/
├── docker-compose.yml
├── backend/
├── frontend/
└── database/
bash# .env файл
MYSQL_ROOT_PASSWORD=super-secret
DB_NAME=my_app
Винаги указвайте конкретни версии на images:
yaml# Добро
image: nginx:1.21-alpine
# Лошо
image: nginx:latest
След като овладеете основите, ето какво да изучавате:
Docker мрежите не са сложни, когато разберете основите. Започнете с bridge мрежи, експериментирайте с проекти като WordPress примера, и постепенно добавяйте сложност.
Помнете: всеки експерт някога е бил начинаещ. Важното е да практикувате редовно и да не се плашите от грешки – те са част от ученето!
Вашето действие сега: Създайте първия си multi-container проект до края на седмицата. Споделете опита си в коментарите – общността винаги е готова да помогне! 🚀
Тази статия ви спести часове от четене на документация и ви дава практически инструменти за реални проекти. Запазете я за справка и споделете с колеги, които също се борят с Docker мрежите! 💡
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut