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 :)
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>
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
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.
Arrêter le conteneur n'a pas fonctionné pour moi non plus. J'ai changé le port dans docker-compose.yml
.
Les deux réponses ci-dessus sont correctes mais n'ont pas fonctionné pour moi.
docker container ls
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.docker stop <container id>
ou docker container stop <container id>
n'a pas fonctionné docker rm -f <container id>
et cela a fonctionné.docker container ls -a
et ce processus n'était pas présent.