Я пытаюсь запустить приложение «Угловое 1.5» на своем Mac в пользовательском образе, созданном из официального изображения узла here, но при попытке получить доступ к сайт, запущенный внутри контейнера. Я могу запустить приложение «Угловое» локально на своем Mac без ошибок.«Соединение отказано» на контейнере узла-докера
Вот мой Dockerfile:
FROM node
COPY . /var/www
WORKDIR /var/www
RUN npm install
EXPOSE 8888
ENTRYPOINT ["npm", "start"]
В package.json, "NPM старт" установлен на раскрутить сайт на порт 8888:
"start": "http-server -a localhost -p 8888 -c-1 ./app",
Я построил собственное изображение, как это :
$docker build -t beerdb-web .
изображение строит успешно:
$docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
beerdb-web latest cf406b4dacc7 13 minutes ago 760.6 MB
Я затем запустить контейнер с изображения так:
$docker run -p 8888:8888 -d cf
contaier, кажется, работает нормально и правильно отображающая контейнерный порт 8888 в Докер машины порт 8888:
$docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
828aeb67bc73 cf "npm start" 2 seconds ago Up 2 seconds 0.0.0.0:8888->8888/tcp condescending_almeida
Я могу осмотреть контейнер и посмотреть, что он имеет IP-адрес и порт 8888:
"NetworkSettings": {
"Bridge": "",
"SandboxID": "0d7180998a7c0bceb0c911069538f29297422fdf98bb859eba78e6584ce65919",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"8888/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "8888"
}
]
},
"SandboxKey": "/var/run/docker/netns/0d7180998a7c",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "99bc9f9fad5a2445687327d45fb4fe29fb8267b08f119d3912720ced48b7d074",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "41b55572b74543f33c99b3f86339ad4c81e9abaacbe0e92077f36cacae29a9c0",
"EndpointID": "99bc9f9fad5a2445687327d45fb4fe29fb8267b08f119d3912720ced48b7d074",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02"
}
}
}
Моя машина появляется отлично, а также:
$docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.100:2376 v1.12.3
Но когда я перейти к http://192.168.99.100:8888/ от моего Mac я получаю «Connection Отказался».
В нижеприведенном фрагменте у меня есть ssh'd в докер-машине. Вы увидите, что я могу пинговать IP-адрес контейнера, но когда я использую локон, чтобы попытаться ударить порт 8888 я получаю отказ в соединении:
$docker-machine ssh
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~/===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \/_ \/_ \| __| __)/_` |/ _ \/__| |//_ \ '__|
| |_) | (_) | (_) | |_/__/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.12.3, build HEAD : 7fc7575 - Thu Oct 27 17:23:17 UTC 2016
Docker version 1.12.3, build 6b644ec
[email protected]:~$ ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.092 ms
64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.092 ms
^C
--- 172.17.0.2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.092/0.092/0.092 ms
[email protected]:~$
[email protected]:~$ curl 172.17.0.2:8888
curl: (7) Failed to connect to 172.17.0.2 port 8888: Connection refused
[email protected]:~$
Для того, чтобы убедиться, что сайт работает должным образом в контейнере I запустил командную строку в контейнер и использовал завиток, чтобы поразить localhost: 8888, и домашняя страница моего веб-сайта была возвращена.
Я считаю, что пользовательское изображение построено правильно из базового образа узла и что оно функционирует должным образом. Я считаю, что проблема связана либо с отображением портов, либо с самой машиной. У меня есть базовая установка инструментария Docker на моем Mac и никаких изменений в машине по умолчанию, работающей внутри VirtualBox, не внесены, но я все еще не могу получить доступ к веб-сайту, запущенному внутри моего контейнера.
Очень расстроенный, любая помощь приветствуется.
Это исправлено - удалено-localhost с 0.0.0.0 по умолчанию, как вы упомянули. –