conexión desde el contenedor de la ventana acoplable al host de la ventana acoplable

conexión desde el contenedor de la ventana acoplable al host de la ventana acoplable

Tengo una configuración en la que ejecuto todas las partes de mi sitio web en contenedores acoplables. Mi nginx que escucha en los puertos 80 y 443 se ejecuta en un contenedor.

363292a98545        scivm/nginx-django-scivmcom:latest   /usr/bin/supervisord   12 days ago         Ghost               0.0.0.0:40001->22/tcp, 88.198.57.112:443->443/tcp, 88.198.57.112:80->80/tcp     lonely_feynmann           

Quiero configurar un proxy para un servicio en otro contenedor. Este contenedor está vinculado al puerto 3000 en el host:

b38c8ef72d0a        mazzolino/strider-dind:latest        wrapdocker /usr/bin/   41 minutes ago      Up 41 minutes       0.0.0.0:3000->3000/tcp, 22/tcp, 27017/tcp                                       distracted_einstein      

Mis iptables en el host de la ventana acoplable se ven así:

root@Ubuntu-1204-precise-64-minimal /var/run # iptables -L
Chain INPUT (policy ACCEPT) target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:8000
DROP       all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Desde dentro del contenedor, no puedo conectarme al puerto 3000 en la máquina host debido a la configuración de iptables.

No quiero abrir el puerto 3000 a la Internet pública.

¿Hay alguna manera de abrir un puente directo entre el contenedor y el host en el puerto 3000?

¿O debería modificar mis iptables para aceptar el rango de IP de Docker?

Respuesta1

Todo lo que necesitas es Dockercapacidades de enlace[obsoleto]

Simplemente deshazte de todas las cosas complicadas que intentaste hacer y comienza a usar contenedores con nombre y luego vincúlalos entre sí.

Respuesta2

La respuesta de Elías es correcta, pero el vínculo es largo y confuso. Aquí hay un resumen simple:

Primero, ejecute el contenedor al que desea vincular y asígnele el nombre:

sudo docker run -d --name db training/postgres

Luego ejecute el otro contenedor, vinculándolo al primer contenedor:

sudo docker run -d -P --name web --link db:db training/webapp python app.py

El enlace del primer contenedor al segundo contenedor se coloca en /etc/hosts. Entonces puedes usarlo como un nombre de host. Por ejemplo:

sudo docker run --name web --link db:db training/webapp ping db

información relacionada