2015-01-26 40 views
6

Tôi đang sử dụng boot2docker để chạy hình ảnh Docker. Tôi biết rất rõ rằng tôi cần truy cập địa chỉ IP của boot2docker để truy cập vào vùng chứa Docker.Truy cập vùng chứa docker từ iOS Simulator

Về cơ bản trong thiết bị đầu cuối là curl $(boot2docker ip):49155

Khi tôi làm theo cách này trong Chrome hoặc Safari, tất cả mọi thứ có vẻ tốt đẹp. Khi tôi nhập địa chỉ trong trình duyệt Safari trong Trình mô phỏng iOS (iOS 8), tôi nhận được tin nhắn: Safari không thể mở trang vì kết nối mạng bị mất.

Tôi đã cố gắng chạy một số ứng dụng localhost-ish khác - SimpleHTTPServer bằng Python, có thể truy cập qua 0.0.0.0:4000 và dường như chỉ hoạt động tốt (tải trang web trong Trình mô phỏng iOS).

Đây có phải là lỗi trong Trình mô phỏng Docker/iOS hay tôi phải thực hiện một số cài đặt bổ sung?

Trả lời

5

boot2docker là một máy ảo đang chạy trên máy của bạn. Máy Mac của bạn là "máy chủ" và máy boot2docker là "khách". Trình mô phỏng iOS cũng là "khách".

Máy khách có thể truy cập mạng bằng nhiều cách. boot2docker được thiết lập để sử dụng NAT, có nghĩa là bạn có thể nhận được từ khách đến ở bất kỳ đâu, nhưng bạn chỉ có thể nhận được đến khách từ máy chủ của mình. Trình mô phỏng iOS không phải là máy chủ (máy có địa chỉ IP riêng và giao diện mạng riêng của nó) nên nó không thể liên lạc với khách boot2docker.

Cách đơn giản nhất là thực hiện chuyển tiếp cổng. boot2docker's instructions đề nghị một cái gì đó giống như

boot2docker ssh -L 49155:localhost:49155 

Điều này gây ra cổng 49.155 trên máy chủ của bạn (hiện đang làm gì) để chuyển tiếp tất cả các kết nối đến cổng 49.155 trên vị khách boot2docker.

Bây giờ, từ trình mô phỏng iOS, bạn có thể liên hệ với máy chủ của mình giống như trên máy chủ: 0.0.0.0:49155. Nếu bạn sử dụng thiết bị iOS thực, bạn sẽ cần có địa chỉ IP bên ngoài đối với máy Mac của bạn và sử dụng nó.

Một thay thế cho cổng chuyển tiếp như thế này là sử dụng Vagrant để tự thiết lập máy ảo (chạy boot2docker hoặc CoreOS hoặc bất kỳ Linux gần đây) và sử dụng máy ảo đó. máy chủ).

+0

Cảm ơn rất nhiều câu trả lời kỹ lưỡng! Trên thực tế những gì tôi đã làm như tôi mong đợi một cái gì đó dọc theo dòng bạn nói (nhưng không có sự hiểu biết rõ ràng này) vì vậy thay vào đó tôi sử dụng công cụ SquidMan để "lộ" boot2docker (+ docker container bên trong) vào mạng nội bộ. Sau đó, trên thiết bị tôi đặt proxy HTTP và nó hoạt động khá tốt. Unfortunatelly trình mô phỏng iOS không cho phép tôi trong giao diện người dùng của mình để đặt proxy HTTP, vì vậy tôi sẽ thử đề xuất của bạn thay thế! – Michal

Các vấn đề liên quan