Установка 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
[root@21e727bc5a7d /]# 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'
Не уверен, что я смущен чем-то или как устранить это, какие-либо идеи?
5 ответов
это решение:
-
запустите приложение следующим образом:
docker run --rm -i -t -p 49160:8080 <your username>/centos-node-hello
выход должен прийти, говоря, слушая порт 8080. Это означает, что приложение работает
-
откройте другой терминал CLI docker и введите:
docker-machine ls
вы увидите и IP-адрес и порт. Пример:
192.168.99.100:<some-number>
-
зайдите в браузер и введите IP-адрес и экспортированный номер порта.
в этом случае
192.168.99.100:49160
и ваш сайт должен включиться.
надеюсь, что это помогает.
Я испытал ту же проблему и обнаружил, что это было из-за boot2docker
не пересылать мой localhost в на виртуальную машину, на которой работает Docker.
узнайте IP-адрес виртуальной машины, работающей с Докером, следующим образом:
$ boot2docker ip
вы увидите результат:
$ 192.168.99.102
и с распечаткой, которую он дает вам, сверните указанный порт на этом IP. Например:
$ curl -i 192.168.99.102:49160
Если вы используете Mac OS X и установили docker с помощью Docker Toolbox, вы можете использовать:
curl $(docker-machine ip default):49160
Я могу рассказать вам, как устранить эту проблему, по крайней мере.
сначала проверьте журналы, вам понадобится идентификатор контейнера для этого. Вы получаете идентификатор контейнера с помощью docker ps
выполнить docker <id> logs
для просмотра журналов. Возможно, ваша команда вернула ошибку.
Если вы хотите получить более близкий взгляд, вы можете начать оболочку BASH на контейнере. Выполните эту команду docker exec -it <id> bash
и это даст вам оболочку на контейнере для устранения неполадок. Оболочка тот же экземпляр контейнера, так что вы можете устранить неполадки запущенной службы.
нажмите данную команду, чтобы найти 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