Ich habe einen einfachen Knoten-Server in Docker eingerichtet.Docker-Ports sind nicht ausgesetzt
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/');
nun das Bild bauen
$ Andockfenster -t node_server bauen.
nun in Behälter laufen
$ -p 1337 laufen Docker: 1337 -d node_server
5909e87302ab7520884060437e19ef543ffafc568419c04630abffe6ff731f70 $
Überprüfen der Behälter läuft und Ports sind abgebildet:
$ 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
Lassen Sie uns jetzt an dem Behälter befestigen und den Server überprüfen läuft innen:
$ Docker exec-it 5909e87302ab7520884060437e19ef543ffafc568419c04630abffe6ff731f70/bin/bash
Und in dem Behälter Befehl Zeilentyp:
[email protected]:/# curl http://localhost:1337
Hello World
Mon Feb 15 2016 16:28:38 GMT+0000 (UTC)
Sieht gut aus oder?
Das Problem
Wenn ich den gleichen curl Befehl auf dem Host ausgeführt werden (oder navigieren Sie mit meinem Browser http://localhost:1337) Ich sehe nichts.
Eine Idee, warum die Port-Zuordnung zwischen Container und Host nicht funktioniert?
Dinge, die ich schon versucht:
- mit dem
--expose 1337
Flagge Rennen
Sie laufen nicht mit '--expose'". Sie erstellen ein Bild mit der 'EXPOSE'-Anweisung, * dann * laufen Sie mit' --publish' (oder '-p'). Siehe meine Antwort unten. – VonC