2017-01-07 16 views
5

I Docker verwenden für die Ausführung von Oracle 11g Express auf macOS Sierra 10.12.2fehlgeschlagen: Port bereits vergeben

https://github.com/wnameless/docker-oracle-xe-11g

Das ist mein Fehler:

Last login: Sat Jan 7 22:42:11 on ttys000 
➜ ~ docker run -d -p 49160:22 -p 49161:1521 wnameless/oracle-xe-11g 
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. 
See 'docker run --help'. 
➜ ~ docker run -d -p 49160:22 -p 49161:1521 wnameless/oracle-xe-11g 
043d8caecbb45d6e2e5999b69a2f760c20d53ff3aa2fad78cb1eb70acb058a1f 
docker: Error response from daemon: driver failed programming external connectivity on endpoint serene_lalande (08bb0bd9684c0f92db7b736986bf894d3a57a714324405823496d13e175e7491): Error starting userland proxy: Bind for 0.0.0.0:49161 failed: port is already allocated. 
➜ ~ 

I Diagnose:

➜ ~ netstat -anp tcp | grep 49161         
tcp4  0  0 192.168.1.2.49161  17.188.166.13.5223  ESTABLISHED 
➜ ~ 

➜ ~ docker --version 
Docker version 1.12.5, build 7392c3b 

Mein Dianostic Identifikation: 20EB9506-CC72-4093-8A15-60E05A841ED1

Ich weiß nicht warum. Vor diesen paar Wochen lief es erfolgreich. Fast, ich ändere, gebe neue DHCP IP frei. Wie läuft die Docker-Instanz, hat Oracle 11g Express Erfolg?

+2

Sind Sie sicher, dass keine andere Instanz dieses Containers bereits ausgeführt wird und diesen TCP-Port verbraucht? Schau dir 'docker ps' an und vergewissere dich, dass es nicht schon da ist, und halte es an, wenn es ist (bevor du ein anderes startest). Nur ein Prozess kann gleichzeitig an einen TCP-Port binden. –

Antwort

5

Sie können nicht starten zweimal

docker run -d -p 49160:22

, da dies bedeutet, dass Sie den Port 49160 auf dem Host zugewiesen werden soll zweimal, natürlich, das zweite Mal, Sie erhalten Sie Nachricht Fehler, versuchen für die zweiter Lauf

docker run -d -p 49161:22

0

Sie verwenden müssen, einen anderen Port statt 49161. einen Port Versuchen weniger als 49152

Sie haben eine bereits bestehende Verbindung zwischen dem Port 49161 auf Ihrem Computer und dem Port 5223 auf einem entfernten Apple-Server. Dieser Port kann daher für nichts anderes verwendet werden, bis diese Verbindung nicht mehr besteht. Port 5223 wird für Push-Benachrichtigungen von Apple verwendet. Soweit ich das beurteilen kann, benutzte Ihr Computer zufällig den zufälligen Port 49161, um sich diesmal mit dem Server von Apple zu verbinden. Früher, als dieser Docker-Container funktionierte, würde ich wetten, dass Port 49161 auf Ihrem Computer dann nicht verwendet wurde.

Wenn Sie eine Verbindung zu einem Remote-Server herstellen, weist Ihr Computer eine zufällige Portnummer für diese Verbindung zu. Dieses Mal hat Ihr Computer 49161 zugewiesen, als er mit dem Push-Benachrichtigungsdienst von Apple verbunden war. Beim nächsten Mal könnte es eine völlig andere Nummer sein. Siehe https://en.wikipedia.org/wiki/Ephemeral_port

Verwandte Themen