web-dev-qa-db-fra.com

Docker - La liaison pour 0.0.0.0:4000 a échoué: le port est déjà alloué

J'utilise docker pour la première fois et j'essayais d'implémenter ceci - https://docs.docker.com/get-started/part2/#tag-the-image

A un moment, j'essayais de me connecter à localhost par cette commande - 

$ curl http://localhost:4000

qui a montré cette erreur 

curl: (7) Failed to connect to localhost port 4000: Connection refused

Cependant, j'ai résolu ceci en suivant le code - 

$ docker-machine ip default
$ curl http://192.168.99.100:4000

Après cela, tout allait bien, mais dans la dernière partie, j'essayais de lancer l'application en utilisant la ligne suivante, conformément au tutoriel ... 

$ docker run -p 4000:80 anibar/get-started:part1

Mais j'ai cette erreur 

C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: driver failed programming external connectivity on endpoint goofy_bohr (63f5691ef18ad6d6389ef52c56198389c7a627e5fa4a79133d6bbf13953a7c98): Bind for 0.0.0.0:4000 failed: port is already allocated.

Il semble que le port est alloué, alors pouvez-vous m'aider en expliquant comment je peux résoudre ce problème ... Merci beaucoup :) 

10
Anik Barua

Vous devez vous assurer que le conteneur précédent que vous avez lancé est tué avant de lancer un nouveau conteneur utilisant le même port.

docker container ls
docker rm -f <container-name>
25
yamenk

En rendant hommage à IgorBeaz, vous devez cesser d’exécuter le conteneur actuel. Pour cela, vous allez connaître l’ID CONTAINER actuel:

$ docker container ls

Vous obtenez quelque chose comme:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
12a32e8928ef        friendlyhello       "python app.py"     51 seconds ago      Up 50 seconds       0.0.0.0:4000->80/tcp   romantic_tesla   

Ensuite, vous arrêtez le conteneur en:

$ docker stop 12a32e8928ef

Enfin, vous essayez de faire ce que vous vouliez faire, par exemple:

$ docker run -p 4000:80 friendlyhello
8
user5965280

Pour tous ceux qui ont ce problème avec docker-compose. Lorsque vous avez plusieurs projets (c’est-à-dire dans différents dossiers) avec des services similaires, vous devez exécuter docker-compose stop dans chacun de vos autres projets.

0
everyman

Arrêter le conteneur n'a pas fonctionné pour moi non plus. J'ai changé le port dans docker-compose.yml.

0
Morgan

Les deux réponses ci-dessus sont correctes mais n'ont pas fonctionné pour moi. 

  1. J'ai continué à voir vide comme ci-dessous pour docker container ls enter image description here
  2. alors j'ai essayé, docker container ls -a et après cela il a montré tout le processus précédemment arrêté et en cours d'exécution.
  3. Alors docker stop <container id> ou docker container stop <container id> n'a pas fonctionné 
  4. alors j'ai essayé docker rm -f <container id> et cela a fonctionné.
  5. Maintenant à cela, j'ai essayé docker container ls -a et ce processus n'était pas présent.
0
paul