tipos redes que network interfaz espaƱol entre eliminar dockers docker0 create contenedores comunicacion networking ubuntu ping docker

networking - redes - que es docker0



El contenedor de Docker se enlaza al puerto, pero no puedo hacer ping (2)

Cuando ejecuta la ventana acoplable en Windows, la construcción es así

Windows machine [ Docker Virtual Box VM [ Container1, Container2, ... ] ]

Entonces, cuando expone un puerto en su contenedor y lo vincula a todas las direcciones en la máquina host, por ejemplo, usando el parámetro -p , el puerto se expone en realidad en la caja virtual VM de la ventana acoplable y no en la máquina con Windows.

Digamos por ejemplo que corres

docker run --name MyContainerWithPortExpose -d -p 127.0.0.1:43306:3306 SomeImage:V1

Ejecute un comando netstat desde el símbolo del sistema de Windows. Extrañamente, no verá el puerto localhost:43306 en el modo LISTEN

Ahora haga un boot2docker ssh desde su consola boot2docker para iniciar sesión en la ventana virtual de la boot2docker acoplable Ejecutar un comando netstat . Vola ..... encontrará localhost:43306 listado en la caja virtual VM de la localhost:43306 acoplable

Trabajar alrededor de

Una vez en la VM Virtual Box, ejecute un comando ipconfig y averigüe la dirección IP de la VM. Use esta IP en el comando de ejecución de la ventana acoplable, en lugar de 127.0.0.1 El boot2docker esta boot2docker es que su servidor DHCP puede causar estragos al asignar diferentes IP cada vez que inicie la boot2docker virtual boot2docker virtual box.

Tengo un contenedor Docker en ejecución (de this imagen). El contenedor parece estar funcionando correctamente por lo que puedo ver (los archivos de registro se ven bien y pueden conectarse a través de SSH al contenedor y usar SQLPlus en su interior). Sin embargo, no puedo conectarme al contenedor desde mi host.

Comencé el contenedor así:

sudo docker run -d -p 49160:22 -p 49161:1521 -p 49162:8080 alexeiled/docker-oracle-xe-11g

He inspeccionado el enlace de puerto por este:

$ sudo docker port <container> 8080 0.0.0.0:49162

Y cuando hago un sudo docker inspect <container> , obtengo entre otros esto:

"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" } ] } },

Cuando intento hacer ping al contenedor, el contenedor responde:

$ 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

Pero no puedo conectarme desde mi host (Windows) al contenedor Docker . Estoy ejecutando Docker dentro de una máquina virtual Ubuntu 12.04 (en VirtualBox en Windows). No estoy seguro de si es un problema con Docker, con mi VM de Linux o con VirtualBox. Reenvié un montón de puertos en VirtualBox:

Este es el resultado 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

¿Alguna idea de por qué no puedo conectarme desde Windows a mi contenedor Docker (en ejecución)?


ACTUALIZAR:

La configuración me parece correcta, pero creo que los puertos 49160-49162 deberían estar 49160-49162 a la interfaz IPv4, no a IPv6. Busqué en Google y parece que encontraste un error abierto en la ventana acoplable:

Veo dos soluciones a su problema:

  1. Desactivar completamente IPv6 en Ubuntu VM
  2. o enlace directamente a la dirección IPv4: -p 172.17.42.1:49162:8080

Responder antes de editar:

No puedes hacer ping a los puertos. Ping está utilizando el protocolo ICMP.

En caso de que no pueda conectarse al puerto publicado, puede verificar si un servicio específico en el contenedor de la ventana acoplable se enlaza con la interfaz de red adecuada (fe 0.0.0.0 ) y no con el localhost . Puede verificar todos los puertos de escucha en el contenedor: netstat -tpla .