nc
fonctionne très bien lorsque je l'exécute sur une machine virtuelle.
Connection to 10.0.0.10 22 port [tcp/ssh] succeeded!
Mais lorsque j'exécute la même commande dans mon conteneur Docker, cela donne l'erreur/exception INCONNUE ci-dessous.
10.0.0.10: inverse Host lookup failed: Unknown Host
(UNKNOWN) [10.0.0.10] 22 (ssh) open
Ci-dessous se trouve la commande nc
que j'utilise:
nc -vz 10.0.0.10 22 -w 4
"La recherche inversée d'hôte a échoué" signifie simplement que nc
voulait imprimer à quel nom d'hôte 10.0.0.10 correspond, mais n'a pas pu.
INCONNU est simplement ce qu'il imprime ensuite comme nom d'hôte.
C'est différent de "J'ai cherché, mais cela ne semble correspondre à rien", ce qui se passe à l'extérieur du conteneur.
Pour être parfaitement explicite, la connexion à l'hôte a réussi, mais la recherche de son nom à partir de l'adresse IP a échoué. Ceci est juste un message d'avertissement informatif, pas une erreur grave; la recherche est de toute façon entièrement facultative et peut être désactivée avec -n
.
Si vous voulez vraiment éviter cet avertissement et ne pas passer à -n
, vous devez configurer un DNS fonctionnel dans le conteneur.
il suffit de mettre -n des deux côtés de l'écouteur et du client pour supprimer cette erreur car il négligera la recherche DNS en l'utilisant.
Oui, cela est prévu si vous avez pas SSH dans le conteneur Docker.
Connection to 10.0.0.10 22 port [tcp/ssh] succeeded!
apparaît dans le VM parce que vous avez SSH dans le VM as ssh [email protected]
et port 22
est utilisé dans le VM pour SSH.
Mais, lorsque vous êtes dans un conteneur Docker (en utilisant docker run
ou docker exec
ou docker attach
), Port 22
sera pas utilisé, et donc l'erreur suivante de nc
est attendue dans le conteneur docker:
10.0.0.10: inverse Host lookup failed: Unknown Host
(UNKNOWN) [10.0.0.10] 22 (ssh) open
Voici les étapes pour tester avec succès si le port 80
est utilisé en utilisant nc
dans un nginx
docker container:
$ Sudo docker run --name docker-nginx -d -p 80:80 nginx
$ Sudo docker exec -it docker-nginx /bin/bash
root@60ec582e90f4:/# apt-get -y update
root@60ec582e90f4:/# apt-get -y upgrade
root@60ec582e90f4:/# apt-get install -y net-tools
root@60ec582e90f4:/# apt-get install -y netcat
# make sure that port 80 is used
root@60ec582e90f4:/# netstat -pan | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1/nginx: master pro
# nc will work now inside the nginx container as port 80 is used inside the container
root@60ec582e90f4:/# nc -vz 127.0.0.1 80 -w 4
localhost [127.0.0.1] 80 (?) open
Par conséquent, pour nc -vz a.b.c.d P -w 4
pour fonctionner à l'intérieur d'un conteneur, le port P
doit être utilisé sur l'adresse IP a.b.c.d
à l'intérieur de ce conteneur.