web-dev-qa-db-fra.com

échoué: le port est déjà alloué

J'utilise Docker pour exécuter Oracle 11g Express sur macOS Sierra 10.12.2

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

C'est mon erreur

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.
➜  ~ 

Je diagnostique:

➜  ~ 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

Mon ID de Dianostic: 20EB9506-CC72-4093-8A15-60E05A841ED1

Je ne sais pas pourquoi. Avant ces quelques semaines, le succès est au rendez-vous. Presque, je change, libère une nouvelle adresse IP DHCP. Comment exécuter l'instance de Docker si Oracle 11g Express réussit?

10
foobarfuu

vous ne pouvez pas lancer deux fois 

docker run -d -p 49160:22 

comme cela signifie que vous voulez allouer le port 49160 sur l'hôte deux fois, bien sûr, la deuxième fois, vous obtenez un message d'erreur, essayez la deuxième fois.

docker run -d -p 49161:22 

8
user2915097

Vous devrez utiliser un autre port au lieu de 49161. Essayez un port inférieur à 49152.

Vous disposez d'une connexion préexistante entre le port 49161 de votre ordinateur et le port 5223 d'un serveur Apple distant. Ce port ne peut donc être utilisé pour autre chose tant que cette connexion n’existe plus. Le port 5223 est utilisé pour les notifications Push d'Apple. Autant que je sache, votre ordinateur a donc eu recours au port aléatoire 49161 pour se connecter au serveur Apple cette fois-ci. Auparavant, lorsque ce conteneur Docker fonctionnait, je parierais que le port 49161 de votre ordinateur n'était pas utilisé.

Chaque fois que vous vous connectez à un serveur distant, votre propre ordinateur attribue un numéro de port aléatoire à cette connexion. Cette fois-ci, votre ordinateur a attribué 49161 lorsqu’il s’est connecté au service de notifications Push d’Apple. La prochaine fois, ce pourrait être un nombre complètement différent. Voir https://en.wikipedia.org/wiki/Ephemeral_port

0
Halprin