Ban đầu container docker của tôi có thể truy cập internet bên ngoài (Đây là dịch vụ / container docker chạy trên Amazon EC2).
Vì ứng dụng của tôi là API, tôi đã theo dõi việc tạo container của mình (nó đã thành công trong việc kéo tất cả các gói cần thiết) bằng cách cập nhật Bảng IP của tôi để định tuyến tất cả lưu lượng truy cập từ cổng 80 đến cổng mà API của tôi (chạy trên docker) lắng nghe
Sau đó, khi tôi cố gắng xây dựng lại container, nó đã thất bại. Sau nhiều lần vật lộn, tôi phát hiện ra rằng bước trước của tôi (đặt quy tắc chuyển tiếp cổng IPTable) đã làm rối tung khả năng kết nối mạng bên ngoài của docker.
Giải pháp: Dừng dịch vụ IPTable của bạn:
sudo service iptables stop
Khởi động lại Docker Daemon:
sudo service docker restart
Sau đó, hãy thử xây dựng lại container của bạn. Hi vọng điêu nay co ich.
Theo sát
Tôi hoàn toàn bỏ qua rằng tôi không cần phải lộn xộn với các Bảng IP để chuyển lưu lượng truy cập đến 80 đến cổng mà API đang chạy trên docker đang chạy. Thay vào đó, tôi chỉ đặt bí danh cổng 80 cho cổng mà API trong docker đang chạy:
docker run -d -p 80:<api_port> <image>:<tag> <command to start api>
sysctl -w net.ipv4.ip_forward=1
(trên Centos 6)