Cung cấp dịch vụ mạng trong Docker

Docker nâng cao

Mike Metzger

Data Engineering Consultant

Dịch vụ mạng

  • Dịch vụ mạng lắng nghe trên một cổng nhất định
  • Chỉ một chương trình có thể lắng nghe trên một cặp IP:cổng tại cùng thời điểm
    • Ví dụ, 10.1.2.3:80 nghĩa là lắng nghe trên IP 10.1.2.3, cổng 80.
  • Giả sử cần gỡ lỗi các phiên bản khác nhau của web server lắng nghe cổng 80
    • Chỉ có thể chạy một bản cùng lúc vì ứng dụng chỉ lắng nghe cổng đó
Docker nâng cao

Dịch vụ trong container

  • Đóng gói ứng dụng vào container cho phép mỗi container lắng nghe trên cổng đó (cặp IP:cổng khác nhau vì mỗi container có IP riêng)
  • Có thể chạy nhiều bản container đồng thời
  • Nhưng làm sao kết nối từ host tới ứng dụng trong container?
Docker nâng cao

Ánh xạ cổng

  • Câu trả lời là ánh xạ cổng (port forwarding/translation)
  • Ánh xạ cổng nhận kết nối vào một IP:cổng và tự động chuyển tiếp tới IP:cổng khác
  • Ở đây, có thể ánh xạ một cổng chưa dùng trên host tới cổng 80 của container
  • Docker Engine có thể xử lý tự động nếu được cấu hình

Ví dụ ánh xạ cổng

Docker nâng cao

Bật ánh xạ cổng

  • Để bật ánh xạ cổng cho container, dùng lệnh docker run với cờ -p
  • -p <host port>:<container port>
  • -p 5501:80
  • Có thể dùng nhiều cờ -p cho các cổng khác nhau
repl@host:~$ docker run -p 5501:80 nginx

repl@host:~$ docker ps -a
CONTAINER ID IMAGE ... PORTS NAMES 84266724ff47 nginx ... 0.0.0.0:5501->80/tcp, :::5501->80/tcp coiled_elgamal
Docker nâng cao

Hãy luyện tập!

Docker nâng cao

Preparing Video For Download...