2015-12-24 12 views
7

Tôi đã có các thiết lập sau:Cho phép một thùng chứa chạy qua docker-máy để kết nối với cổng Mysql hoặc XDEBUG trên hệ thống OSX mẹ mà không sử dụng địa chỉ IP được gán OSX DHCP?

  • OSX chạy MySQL lắng nghe trên tất cả các adapter mạng tại cổng 3306
  • Xdebug kích hoạt IDE lắng nghe trên cổng 9000 trên cơ sở hệ thống OSX.
  • máy chủ lưu trữ trên máy chạy trên hệ thống OSX với máy chủ lưu trữ ip 192.168.99.100
  • Vùng chứa docker dựa trên debian với ứng dụng khách mysql chạy trên máy chủ docker và HHVM chạy với xdebug tìm cách kết nối với một số máy chủ từ xa may mắn trên cổng 9000.

Địa chỉ IP thay đổi thường xuyên trên hệ thống OSX do được gán qua DHCP, vì vậy tôi muốn vùng chứa docker bằng cách nào đó có thể truy cập máy chủ mysql bất kể IP OSX gốc là gì bộ điều hợp mạng được gán (không tự cập nhật nó). Ngoài ra, tôi cần một ip ổn định tôi có thể cung cấp tập tin server.ini HHVM của tôi một máy chủ từ xa cho Xdebug.

Khi chạy hệ thống cơ sở của Linux, đây không phải là vấn đề vì máy chủ lưu trữ docker và máy chạy bản gốc thực sự chạy docker là một và giống nhau. Ngoài ra, có một số cách để một container để tìm hiểu ip của máy chủ để vấn đề không phải là nhấn máy chủ docker.

Tuy nhiên, trong OSX chạy docker-machine, máy chủ không phải là hệ điều hành OSX gốc, mà thay vào đó là máy ảo đang chạy trong hộp ảo (giả sử bạn đang sử dụng trình điều khiển vb, và ai là ngọn đồi sam sam isn ' t?).

Điều duy nhất tôi có thể nghĩ đến là yêu cầu chuyển tiếp cổng vào 3306 đến máy chủ lưu trữ máy (192.168.99.100 không bao giờ thay đổi) đến cổng OSX 3306. Sau đó có vùng chứa máy chủ docker-máy cho Mysql yêu cầu. NẾU điều này hoạt động, tôi có thể rửa và lặp lại cho bất kỳ cổng nào tôi cần liên kết như xdebug trên cổng 9000.

Có ai biết cách thực hiện điều này hoặc có đề xuất khác không?

Trả lời

18

Đã tìm ra cách mà không cần thực hiện bất kỳ thay đổi nào cung cấp một ip nhất quán để kết nối với hệ thống OSX cơ bản. Docker máy thiết lập mọi thứ theo cách như vậy để làm cho điều này có thể.

  • Máy Docker tạo VM ảo với 2 bộ điều hợp mạng, một bộ được thiết lập dưới dạng chỉ dành cho máy chủ, bộ còn lại được đặt là NAT. Không biết tại sao nó tạo 2, nhưng
  • Bộ điều hợp chỉ dành cho máy chủ cung cấp IP OSX 192.168.99.1 và các máy ảo khác nhau sử dụng địa chỉ này bắt đầu với 192.168.99.100. Tuy nhiên, bên trong mạng VM, bạn không thể sử dụng địa chỉ 192.168.99.1 để truy cập các cổng trên hệ thống OSX cha mẹ (không chắc chắn lý do tại sao, nhưng máy chủ dự đoán chỉ có ý định liên lạc giữa các máy ảo).
  • Bộ điều hợp mạng NAT được đặt để OSX nhận được bản 10.0.2.2 của ip và VM nhận 10.0.2.15. Với NAT, bạn có thể định tuyến tới hệ thống OSX ở 10.0.2.2 từ cả máy chủ lưu trữ docker và các thùng chứa đang chạy trên máy chủ.

Kể từ 10.0.2.2 địa chỉ này cho máy OSX không thay đổi (trừ khi bạn vít với hộp ảo thiết lập mạng) bingo, nhận được những gì tôi cần.

+0

Giải thích của bạn đã giúp tôi hiểu cách tiếp cận HOST từ một thùng chứa đang chạy trong máy ảo, cảm ơn rất nhiều! Tôi rất ngạc nhiên khi không có upvotes. Tôi muốn chỉ ra rằng tôi có thể kết nối với HOST bằng cả hai IP: 192.168.99.1 và 10.0.2.2 (không chắc chắn tại sao nhưng nó hoạt động).Cài đặt docker/VM là cài đặt chuẩn do Docker Toolbox cài đặt. – Calin

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