Установка 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 ответов


это решение:

  1. запустите приложение следующим образом:

    docker run --rm -i -t -p 49160:8080 <your username>/centos-node-hello

    выход должен прийти, говоря, слушая порт 8080. Это означает, что приложение работает

  2. откройте другой терминал CLI docker и введите:

    docker-machine ls

    вы увидите и IP-адрес и порт. Пример: 192.168.99.100:<some-number>

  3. зайдите в браузер и введите 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