Подтвердить что ты не робот

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'

Не уверен, что я запутался в чем-то или как устранить это, любые идеи?

4b9b3361

Ответ 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