Conteneur Docker se lie au port, mais je suis incapable de ping
J'ai l'exécution d'un conteneur Docker (à partir de cette de l'image). Le conteneur semble fonctionner correctement aussi loin que je peux voir (les fichiers log sont à la recherche de bonnes et peuvent se connecter via SSH à conteneur et utiliser SQLPlus à l'intérieur). Cependant, je n'arrive pas à se connecter au conteneur de mon hôte.
J'ai commencé le conteneur comme ceci:
sudo docker run -d -p 49160:22 -p 49161:1521 -p 49162:8080 alexeiled/docker-oracle-xe-11g
J'ai inspecté le port de liaison par ceci:
$ sudo docker port <container> 8080
0.0.0.0:49162
Et quand je fais un sudo docker inspect <container>
- je obtenir entre autres ceci:
"NetworkSettings": {
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"Gateway": "172.17.42.1",
"Bridge": "docker0",
"PortMapping": null,
"Ports": {
"1521/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "49161"
}
],
"22/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "49160"
}
],
"8080/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "49162"
}
]
}
},
Quand j'essaye de faire un ping du conteneur, le conteneur répond:
$ ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_req=1 ttl=64 time=0.138 ms
64 bytes from 172.17.0.2: icmp_req=2 ttl=64 time=0.132 ms
Mais je ne peut pas se connecter à partir de mon hôte (Windows) pour le conteneur Docker. Je suis en cours d'exécution menu fixe à l'intérieur d'un Ubuntu 12.04 la machine virtuelle dans VirtualBox sous Windows). Je ne suis pas sûr si c'est un problème avec menu fixe, avec ma machine virtuelle Linux ou avec VirtualBox. J'ai envoyé un tas de ports dans VirtualBox:
C'est le résultat de sudo netstat -tpla
:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:sunrpc *:* LISTEN 542/rpcbind
tcp 0 0 *:ssh *:* LISTEN 1661/sshd
tcp 0 0 *:51201 *:* LISTEN 831/rpc.statd
tcp 0 80 docker:ssh 10.0.2.2:62220 ESTABLISHED 1902/sshd: vagrant
tcp6 0 0 [::]:49160 [::]:* LISTEN 2388/docker
tcp6 0 0 [::]:49161 [::]:* LISTEN 2388/docker
tcp6 0 0 [::]:56105 [::]:* LISTEN 831/rpc.statd
tcp6 0 0 [::]:49162 [::]:* LISTEN 2388/docker
tcp6 0 0 [::]:sunrpc [::]:* LISTEN 542/rpcbind
tcp6 0 0 [::]:ssh [::]:* LISTEN 1661/sshd
Aucune idée pourquoi je ne peut pas se connecter à partir de Windows à ma (en fonctionnement) conteneur Docker?
Vous devez vous connecter pour publier un commentaire.
Mise à JOUR:
De configuration vous semble ok pour moi, mais je pense que les ports
49160-49162
doit être lier à l'interface IPv4 IPv6. J'ai cherché sur google et il semble que vous avez rencontré un bug ouvert dans le panneau:Je vois deux solutions à votre problème:
172.17.42.1:49162:8080
Réponse avant edit:
Vous ne pouvez pas ping ports. Ping est en utilisant le protocole ICMP.
Dans le cas où vous ne pouvez pas vous connecter à la publication de port, vous pouvez vérifier si service spécifique dans le conteneur docker ne se lient à la bonne interface réseau (f.e.
0.0.0.0
) et de ne paslocalhost
. Vous pouvez consulter tous les ports en écoute dans le conteneur:netstat -tpla
.ping 172.17.0.2
à l'adresse IP du conteneur, je reçois la réponse attendue. Mais je suis toujours incapable de se connecter à elle... j'ai modifier ma question.sudo netstat -tpla
ressemble exactement la même), mais il fonctionne en quelque sorte. Je peux accéder au conteneur de ma machine virtuelle Linux ainsi que de mon hôte Windows. Mais je ne sais toujours pas la vraie source de mes problèmes... Cependant, merci pour votre aide! Il travaille maintenant 🙂Lorsque vous exécutez docker à windows de la construction, c'est comme cela
Ainsi, lorsque vous vous exposez à un port dans votre récipient et de le lier à toutes les adresses dans la machine hôte dire à l'aide de la
-p
paramètre, le port est en fait exposée dans le menu fixe VM virtual box et non sur la machine windows.Dire, par exemple, vous exécutez
Exécuter un
netstat
commande à partir de votre invite de commande windows. Étrangement, vous ne verrez pas lelocalhost:43306
portLISTEN
modeMaintenant faire un
boot2docker ssh
de votreboot2docker
de la console pour vous connecter au panneau VM virtual boxExécuter un
netstat
de commande. Vola..... vous trouverezlocalhost:43306
figurant sur le panneau boîte virtuelle VMTravail autour de:
Une fois dans la Boîte Virtuelle (VM), d'exécuter une
ipconfig
de commande et de trouver l'adresse IP de la VM. L'utilisation de cette propriété intellectuelle dans le exécuter le panneau de commande, au lieu de127.0.0.1
Le côté vers le bas pour ce travail autour de votre serveur DHCP peut parfois jouer des ravages par l'attribution d'adresses ip différente à chaque fois que vous démarrez le
boot2docker
boîte virtuelle VM.