Skip to main content

Command Palette

Search for a command to run...

Bài 13: Cơ bản về Docker Networking

Published
2 min readView as Markdown

Giới thiệu

Networking trong Docker không chỉ là một yếu tố "được xây thêm vào" mà là một phần thiết yếu để đảm bảo containers có thể giao tiếp một cách hiệu quả với nhau và với thế giới bên ngoài.

Cách Docker Handle Networking

Docker sử dụng một số công nghệ của Linux như namespaces và iptables để cung cấp chức năng networking. Khi một container được tạo, Docker tạo một pair của virtual ethernet interfaces, một ở trong container và một ở bên ngoài, và bridge chúng lại với nhau.

Bridge Network

Bridge network là network driver mặc định khi bạn tạo một container. Khi Docker daemon khởi động, nó tự động tạo một bridge network mặc định tên là docker0.

Cách hoạt động

Bridge network giúp tạo một mạng private ảo bên trong host machine, cho phép các container trong mạng này giao tiếp qua IP. Đặc điểm quan trọng là các container có thể giao tiếp với các service trong host machine qua gateway của bridge network.

Ví dụ Bridge Network

  1. Tạo Bridge Network
docker network create --driver=bridge my_custom_network
  1. Run Containers trong Custom Bridge Network
docker run --network=my_custom_network -itd --name=container1 nginx
docker run --network=my_custom_network -itd --name=container2 alpine ping container1

Trong ví dụ này, container1 chạy web server nginx, và container2 thực hiện ping tới container1 thông qua hostname.

  1. Inspect Network

Để kiểm tra thông tin mạng của my_custom_network, sử dụng lệnh:

docker network inspect my_custom_network

Ưu và Nhược điểm của Bridge Network

  • Ưu điểm:

    • Isolation: Được isolate tốt, giúp tăng cường bảo mật.

    • Simplicity: Rất dễ để set up và sử dụng.

  • Nhược điểm:

    • Performance Overhead: Bridge network có thể làm giảm hiệu suất so với host network.

    • Manually Expose Ports: Ports phải được expose thủ công để cho phép giao tiếp với bên ngoài.

Network Policies

Docker cho phép bạn đặt các network policies bằng cách sử dụng iptables. Ví dụ, để block traffic từ một container cụ thể:

docker network create --internal restricted_network
docker run --network=restricted_network alpine

Network này giờ đây là một mạng nội bộ (--internal), giúp cô lập hoàn toàn với mạng bên ngoài.

Kết luận

Hiểu rõ cách Docker handle networking và cụ thể là bridge network là điều cực kỳ quan trọng trong việc deploy các ứng dụng phức tạp, cũng như trong việc đảm bảo bảo mật và hiệu năng của các container.

More from this blog

Untitled Publication

218 posts