2014-12-10 3 views
0

Я пытаюсь подключиться к веб-приложению, работающему на tomcat8 в контейнере докера. я могу получить к нему доступ из внутри контейнера делает lynx http://localhost:8080/myapp, но когда я пытаюсь получить к нему доступ с хоста я получаю только HTTP request sent; waiting for response.Не удается получить доступ к серверу tomcat8, запущенному в контейнере докеров с главной машины

Я обнажая порт 8080 в Dockerfile, я использую sudo docker inspect mycontainer | grep IPAddress, чтобы получить адрес IP- контейнера.

Команда, я использую для запуска контейнера Docker это:

sudo docker run -ti --name myapp --link mysql1:mysql1 --link rabbitmq1:rabbitmq1 -e "MYSQL_HOST=mysql1" -e "MYSQL_USER=myuser" -e "MYSQL_PASSWORD=mysqlpassword" -e "MYSQL_USERNAME=mysqlusername" -e "MYSQL_ROOT_PASSWORD=rootpassword" -e "RABBITMQ_SERVER_ADDRESS=rabbitmq1" -e "MY_WEB_ENVIRONMENT_ID=qa" -e "MY_WEB_TENANT_ID=tenant1" -p "8080:8080" -d localhost:5000/myapp:latest 

Мои Dockerfile:

FROM localhost:5000/web_base:latest 
MAINTAINER "Me" <[email protected]_company.com> 

#Install mysql client 
RUN yum -y install mysql 

#Add Run shell script 
ADD run.sh /home/ec2-user/run.sh 
RUN chmod +x /home/ec2-user/run.sh 

EXPOSE 8080 

ENTRYPOINT ["/bin/bash"] 
CMD ["/home/ec2-user/run.sh"] 

Мой run.sh:

sudo tomcat8 start && sudo tail -f /var/log/tomcat8/catalina.out 

Любые идеи, почему я может получить доступ к нему из контейнера, но не от хоста?

Thanks

+0

Почему Sudo в run.sh? Докер выполняет вашу команду как root по умолчанию. – Bryan

ответ

0

Как выглядит команда вашего docker run? Вам все равно нужно сделать -p 8080: 8080. Expose в файле docker только предоставляет его для связанных контейнеров не для хоста vm.

+0

Я уже использую -p "8080: 8080" –

+0

Вы используете boot2docker? Можете ли вы опубликовать команду запуска docker и/или ответ от docker ps –

0

Теперь я могу получить доступ к серверу tomcat8 с хоста. Проблема здесь:

sudo tomcat8 start && sudo tail -f /var/log/tomcat8/catalina.out 

Tomcat8 должен быть запущен как сервис вместо:

sudo service tomcat8 start && sudo tail -f /var/log/tomcat8/catalina.out 
0

Хит дал команду на находкой IP адрес Докер-машины

$ docker-machine ls 

Th е выход будет как :

NAME  ACTIVE DRIVER  STATE  URL       SWARM DOCKER ERRORS 
default *  virtualbox Running tcp://192.168.99.100:2376   v1.10.3 

Теперь запустите приложение из главного компьютера в качестве :http://192.168.99.100:8080/myapp