2016-03-22 23 views
7

Sau khi nâng cấp lên công cụ Docker 1.10 (từ 1.08), tôi đã nhận thấy rằng cấu hình proxy ngược của tôi không hoạt động nữa.Không thể ping vùng chứa Docker qua tên máy chủ/tên

Tất cả các ứng dụng của tôi (bao gồm Nginx cho proxy ngược) được chứa và được liên lạc qua tên vùng chứa. Dưới đây là ví dụ về các máy chủ ảo trong Nginx:

server { 
    server_name jobs; 
    location/{ 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_pass http://jenkins:8080; 
    } 
} 

Bây giờ, tôi có thể ping thùng chứa Jenkins từ thùng Nginx chỉ qua IP nhưng không còn thông qua tên vùng chứa. Vì IP thường xuyên bị thay đổi do cập nhật, triển khai lại, v.v ... có cách nào tốt hơn để tránh xác định IP trong cấu hình proxy ngược không?

Di sản --link không phải là tùy chọn vì có nhiều vùng chứa.

+0

Tôi đã cập nhật câu trả lời trong ánh sáng của Docker sắp tới 1.12 và chế độ Docker bầy đàn của nó. – VonC

Trả lời

1

Bạn có thể kiểm tra network-scope alias đi kèm với docker network connectdocker run.

Bắt đầu vùng chứa có bí danh cho phép NGinx của bạn đảo ngược proxy với bí danh đó trong cấu hình của nó.
Khi chạy, bí danh đó sẽ giải quyết vào vùng chứa mà bạn đã bắt đầu sau.

Xem ví dụ trong "Docker Networking: Auto-discovering host names in a bridge network".
Lưu ý rằng bạn will need a key-value store để quản lý vùng chứa của bạn trong mạng docker 1.10+.


Note (tháng 7 năm 2016) với Docker 1.12 và nó swarm mode, nó trở nên đơn giản hơn.
Xem ví dụ "The beautiful networking stack in Docker Swarm mode"

Các Docker bầy đàn sẽ xác định một mạng overlay một cửa hàng quan trọng có giá trị dành cho bạn! Các thùng chứa sẽ nhìn thấy nhau.

Một ví dụ cụ thể: "NGINX as a Reverse Proxy for Docker Swarm Clusters"

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