Я установил простой сервер узлов в Docker.Докеры не открыты
Dockerfile
FROM node:latest
RUN apt-get -y update
ADD example.js .
EXPOSE 1337
CMD node example.js
example.js
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n'+new Date);
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
Теперь создать образ
$ докер построить -t node_server.
Запустим в контейнере
$ Docker запустить -p 1337: 1337 -d node_server
$ 5909e87302ab7520884060437e19ef543ffafc568419c04630abffe6ff731f70
Проверьте контейнер работает и порты отображаются:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5909e87302ab node_server "/bin/sh -c 'node exa" 7 seconds ago Up 6 seconds 0.0.0.0:1337->1337/tcp grave_goldberg
Теперь давайте прикрепить к контейнеру и проверить сервер работает внутри:
$ Докер Exec -это 5909e87302ab7520884060437e19ef543ffafc568419c04630abffe6ff731f70/бен/Баш
И в команде контейнера тип линии:
[email protected]:/# curl http://localhost:1337
Hello World
Mon Feb 15 2016 16:28:38 GMT+0000 (UTC)
Выглядит хорошо?
Проблема
Когда я выполнить ту же команду локон на хосте (или перемещаться с моим браузером для http://localhost:1337) Я ничего не вижу.
Любая идея, почему сопоставление портов между контейнером и хостом не работает?
Вещи, которые я уже пробовал:
- Бег с
--expose 1337
флагом
Вы не работаете с '--expose'. Вы создаете образ с директивой 'EXPOSE', * затем * вы запускаете с' --publish' (или '-p'). См. Мой ответ ниже. – VonC