2016-09-09 4 views
6

У меня установлен механизм Docker на Debian Jessie, и я запускаю там контейнер с nginx. Моя команда «запустить» выглядит следующим образом:Сделать контейнер доступным только с localhost

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

Он отлично работает, проблема в том, что теперь содержание этого контейнера доступен через http://{server_ip}:1234. Я хочу запустить несколько контейнеров (домены) на этом сервере, поэтому я хочу настроить для них обратные прокси.

Как я могу убедиться, что контейнер будет доступен только через обратный прокси, а не напрямую от IP:port? Например .:

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

// EDIT: Просто чтобы быть ясно - я не спрашиваю, как настроить обратный прокси-сервер, но как запустить Docker контейнер доступен только с локального хоста.

ответ

11

Укажите нужный хост IP в port mapping

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

Если вы делаете обратный прокси-сервер , вы можете поместить их в определенную пользователем сеть вместе с обратным прокси-сервером, тогда все будет в контейнере и доступно в их внутренней сети.

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

См. Также https://github.com/jwilder/nginx-proxy, чтобы сделать автоматическое обратное-прокси. – kwerle

2

Ну, решение довольно просто, вы просто должны указать 127.0.0.1 при отображении порта:

docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9 
Смежные вопросы