Khi làm việc với Docker, không ít lập trình viên gặp cảnh container chỉ có shell trần, thiếu curl, wget hay bất kỳ công cụ HTTP nào. Một mẹo nhỏ nhưng cực kỳ hữu ích từ Bash /dev/tcp cho phép bạn gửi yêu cầu HTTP chỉ bằng vài dòng lệnh, không cần cài thêm gói nào cả.

Cách hoạt động của /dev/tcp trong Bash

Bash có khả năng mở socket TCP thông qua cú pháp /dev/tcp/host/port. Đây là tính năng được tích hợp sẵn trong Bash, không phải là file thực sự trên ổ cứng. Bạn dùng exec 3<>/dev/tcp/service/8642 để mở kết nối, sau đó dùng printf và cat để gửi HTTP request và nhận response. Header Connection: close rất quan trọng vì nếu thiếu, server sẽ giữ kết nối mở và cat sẽ đợi mãi không thấy kết thúc.

Lưu ý khi áp dụng thực tế

Kỹ thuật này chỉ dùng cho kiểm tra nhanh, không thay thế curl cho các tác vụ phức tạp. Nó không hỗ trợ TLS, không xử lý redirect, chunked response hay nén. Đây là tính năng riêng của Bash, không có trong dash hay zsh, nên script cần khai báo #!/bin/bash. Dù vậy, đây là công cụ cứu cánh tuyệt vời cho devops và developer khi làm việc với Docker network nội bộ, nhất là khi image được tối giản đến mức tối đa. Đây là kiến thức hữu ích cho bất kỳ ai thường xuyên làm việc với công nghệ container.