2016-09-09 23 views
6

Tôi có công cụ Docker được cài đặt trên Debian Jessie và tôi đang chạy thùng chứa với nginx trong đó. Lệnh "chạy" của tôi trông giống như sau:Làm cho vùng chứa chỉ có thể truy cập từ localhost

docker run -p 1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9 

Nó hoạt động tốt, hiện giờ nội dung của vùng chứa này có thể truy cập qua http://{server_ip}:1234. Tôi muốn chạy nhiều container (tên miền) trên máy chủ này vì vậy tôi muốn thiết lập proxy ngược cho họ.

Làm cách nào để đảm bảo rằng vùng chứa chỉ có thể truy cập thông qua proxy ngược và không trực tiếp từ IP:port? Eg .:

http://{server_ip}:1234 # not found, connection refused, etc... 
http://localhost:1234 # works fine 

// EDIT: Chỉ cần được rõ ràng - Tôi không yêu cầu làm thế nào để thiết lập đảo ngược proxy, nhưng làm thế nào để chạy Docker container để có thể truy cập chỉ từ localhost.

Trả lời

11

Xác định máy chủ IP cần thiết trong port mapping

docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9 

Nếu bạn đang làm một reverse proxy , bạn có thể muốn đặt tất cả chúng trên một mạng do người dùng xác định cùng với proxy ngược của bạn, sau đó mọi thứ nằm trong vùng chứa và có thể truy cập được trên mạng nội bộ của họ.

docker network create net 
docker run -d --net=web -v /var/www/:/usr/share/nginx/html nginx:1.9 
docker run -d -p 80:80 --net=web haproxy 
+0

Xem thêm https://github.com/jwilder/nginx-proxy để thực hiện tự động đảo ngược proxy. – kwerle

2

Vâng, giải pháp là khá đơn giản, bạn chỉ cần xác định 127.0.0.1 khi lập bản đồ cổng:

docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9 
Các vấn đề liên quan