Networking là một khía cạnh quan trọng trong Docker, cho phép các container tương tác với nhau và với mạng bên ngoài. Dưới đây là một hướng dẫn chi tiết về cách kết nối và quản lý mạng trong Docker:
Mạng mặc định (Default Bridge Network)
Docker cung cấp một mạng mặc định được gọi là "bridge" (giao tiếp). Khi bạn tạo một container mà không chỉ định mạng nào, container sẽ tự động được gắn kết vào mạng bridge mặc định.
Container trên cùng mạng bridge có thể tương tác với nhau bằng cách sử dụng địa chỉ IP nội bộ của mỗi container. Docker cung cấp tính năng DNS giúp container có thể giao tiếp với nhau bằng tên miền.
Liên kết container (Container Linking)
Bằng cách sử dụng tùy chọn --link
, bạn có thể liên kết một container với container khác. Điều này cho phép các container giao tiếp với nhau thông qua tên địa chỉ hoặc biến môi trường.
Ví dụ, khi bạn chạy một container từ image có tên là "webapp", bạn có thể liên kết container đó với một container MySQL có tên là "mysql" bằng cách sử dụng câu lệnh sau: docker run --name webapp --link mysql:mysql webapp-image
Mạng tùy chỉnh (Custom Network)
Bạn có thể tạo mạng tùy chỉnh trong Docker để cho phép các container trong cùng mạng tương tác với nhau.
Sử dụng lệnh docker network create
để tạo mạng tùy chỉnh. Ví dụ, để tạo một mạng có tên là "my-network", bạn có thể sử dụng câu lệnh: docker network create my-network
Gắn kết container với mạng tùy chỉnh
Khi tạo một container, sử dụng tùy chọn --network
để gắn kết container với mạng tùy chỉnh.
Ví dụ, để gắn kết container với mạng "my-network", bạn có thể sử dụng câu lệnh: docker run --network my-network my-image
Kết nối container với mạng bên ngoài
Sử dụng tùy chọn --publish
hoặc --publish-all
để kết nối các cổng của container với cổng trên máy host hoặc cổng ngẫu nhiên trên máy host.
Ví dụ, để kết nối cổng 80 của container với cổng 8080 trên máy host, bạn có thể sử dụng câu lệnh: docker run -p 8080:80 my-image
Qua việc sử dụng tính năng networking trong Docker, bạn có thể quản lý việc kết nối và giao tiếp giữa các container và mạng trong môi trường Docker. Điều này tạo ra một môi trường linh hoạt và khả năng mở rộng cho ứng dụng của bạn, đồng thời cho phép các thành phần trong container tương tác với nhau và với mạng bên ngoài một cách dễ dàng.