Docker Node Установка JS
Я новичок в docker, и я пытаюсь следовать руководству node js, которое они перечисляют: https://docs.docker.com/examples/nodejs_web_app/
Я следую этому руководству, и все, кажется, отлично работает до части тестирования, и я не могу завивать к указанному порту.
$ curl -i localhost:49160
curl: (7) Failed to connect to localhost port 49160: Connection refused
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
21e727bc5a7d username/docker-test "node /src/index.js" 13 minutes ago Up 13 minutes 0.0.0.0:49160->8080/tcp gloomy_heisenberg
$ docker logs 21e727bc5a7d
Running on localhost:8080
$ docker exec -it 21e727bc5a7d bash
[[email protected] /]# netstat -tulpn
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1/node'
Не уверен, что я запутался в чем-то или как устранить это, любые идеи?
Ответы
Ответ 1
Это решение:
-
Запустите приложение следующим образом:
docker run --rm -i -t -p 49160:8080 <your username>/centos-node-hello
Должен появиться вывод о прослушивании порта 8080.
Это означает, что приложение работает
-
Откройте еще один терминал CLI докера и введите:
docker-machine ls
Вы увидите IP-адрес и порт. Пример: 192.168.99.100:<some-number>
-
Перейдите в браузер и введите IP-адрес и номер экспортированного порта.
В этом случае 192.168.99.100:49160
, и ваш сайт должен появиться.
Надеюсь, что это поможет.
Ответ 2
У меня возникла та же проблема, и я обнаружил, что это связано с тем, что boot2docker
не перенаправляет мой localhost на виртуальную машину, в которой работает Docker.
Узнайте IP-адрес виртуальной машины, запускающей Docker, следующим образом:
$ boot2docker ip
Вы увидите вывод, например:
$ 192.168.99.102
И с распечаткой, которую он дает вам, сверните свой указанный порт на этом IP-адресе. Например:
$ curl -i 192.168.99.102:49160
Ответ 3
Если вы используете Mac OS X и установили докеры с помощью Docker Toolbox, вы можете использовать:
curl $(docker-machine ip default):49160
Ответ 4
Я могу рассказать вам, как устранить эту проблему как минимум.
Сначала проверьте журналы, для этого вам понадобится идентификатор контейнера. Вы получаете идентификатор контейнера, используя docker ps
Запустите docker <id> logs
, чтобы просмотреть журналы. Возможно, ваша команда вернула ошибку.
Если вы хотите поближе познакомиться, вы можете запустить оболочку BASH на контейнере. Запустите эту команду docker exec -it <id> bash
, и это даст вам оболочку в контейнере для устранения неполадок. Оболочка - это тот же экземпляр контейнера, чтобы вы могли устранить неисправность выполняемой службы.
Ответ 5
Нажмите данную команду, чтобы найти IP-адрес докер-машины
$ docker-machine ls
Выход будет выглядеть как :
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.100:2376 v1.10.3
Теперь запустите приложение с главной машины как :
$ curl -i 192.168.99.100:49160