Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

203
Vistas
¿Cómo vincular contenedores en docker?

Aquí está el resultado cuando docker ps : aquí está la imagen cuando escribo docker ps

Tengo 3 contenedores docker: webapps, redis y rabbitmq. Quiero vincular las aplicaciones web del contenedor al contenedor redis y al contenedor rabbitmq. En aplicaciones que no son de Docker, mywebapps puede enviar mensajes a rabbitmq y escribir/leer redis.

Intenté usar un comando como este

 docker run --name rabbitmq -p 8080:80 --link webapps:nimmis/apache-php7 -d rabbitmq

Pero no funciona.

Aquí está mi config.php en aplicaciones web donde intento enviar mensajes a través de rabbitmq:

 define('HOST', 'localhost'); define('PORT', 5672);

Traté de cambiar localhost con nombre de host

 define('HOST', 'rabbitmq'); define('PORT', 5672);

El mensaje de error dice connection refused .

Parece que mis tres contenedores deben configurarse en el mismo espacio de nombres de red.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

La vinculación es una función heredada . Utilice "redes definidas por el usuario":

 sudo docker network create mynetwork

Luego vuelva a ejecutar sus contenedores usando esta red:

 sudo docker run --name rabbitmq -p 8080:80 -d --network mynetwork rabbitmq

Haga lo mismo con otros contenedores que desee conectar entre sí.

Al utilizar "redes definidas por el usuario", tiene a su disposición una "resolución de nombres interna" (algo así como la resolución de nombres de dominio cuando visita sitios web). Puede usar los nombres del contenedor al que desea hacer referencia para resolver las direcciones IP de los contenedores, siempre que se ejecuten en la misma "red definida por el usuario". Con esto, puede resolver la dirección IP del contenedor rabbitmq con su nombre, dentro de otros contenedores, en la misma red.

Todos los contenedores en la misma "red definida por el usuario" tendrán conectividad de red. No hay necesidad de "vinculación heredada".

over 4 years ago · Santiago Trujillo Denunciar

0

Para dependencias y enlaces entre contenedores, querrá usar docker-compose donde puede definir los enlaces entre contenedores.

En su directorio raíz donde almacena sus archivos Docker, simplemente cree un nuevo archivo llamado docker-compose.yml y aquí puede definir sus contenedores como servicios que dependen unos de otros de esta manera:

 version: '2' services: webapps: build: . links: - "rabbitmq:rabmq" - "redis" rabbitmq: image: rabbitmq redis: image: redis

así que aquí, en la definición del servicio de rabbitmq web, verá que links los otros dos servicios, webapps y redis . Lo que esto significa es que cuando se crea el contenedor de aplicaciones webapps , se realiza una entrada en su archivo de hosts de modo que el nombre de dominio redis se traduce a la IP y el número de puerto del contenedor real.

Tiene la opción de cambiar el nombre de cómo se dirige este contenedor usando la notación service:alias , como definí el rabbitmq para usar el alias rabmq dentro del contenedor webapps .

Ahora, para construir e iniciar sus contenedores usando docker-compose simplemente escriba:

 docker-compose up -d

Entonces, conectarse a otro contenedor es tan simple como usar este alias como el nombre del host.

Dado que está utilizando docker-compose en este caso, crea una red docker automáticamente para conectar todos los contenedores, por lo que no debería preocuparse por eso. Pero para obtener más información, consulte los documentos: https://docs.docker.com/compose/networking/#/specifying-custom-networks

over 4 years ago · Santiago Trujillo Denunciar

0

Debe vincular rabbitmq y redis a su contenedor de aplicaciones web y no al revés.


    #ejecutar contenedor redis
    ventana acoplable ejecutar --nombre some-redis -d redis

    #ejecutar contenedor rabbitmq
    ventana acoplable ejecutar -d --nombre de host mi-conejo --nombre algún-conejo rabbitmq

    #ejecutar contenedor de aplicaciones web
    docker run --name webapps -p 8080:80 --link some-redis:redis --link some-rabbit:rabbitmq nimmis/apache-php7

Primero ejecute los contenedores redis y rabbitmq. Luego ejecute el contenedor de aplicaciones web con enlaces a los 2 contenedores.

Ahora, configurar el host redis en las aplicaciones web es fácil. Simplemente puede usar la variable env 'REDIS_PORT_6379_TCP_ADDR' . Porque una vez que se vincula un contenedor, obtienes sus variables env. y redis exporta esa variable.

Con respecto al host de rabbitmq, puede obtener la ip después de que el contenedor de conejo esté activo de la siguiente manera:


    RABBITMQ_IP=$(docker inspeccionar --format '{{ .NetworkSettings.IPAddress }}' algún conejo)

y luego páselo --env cuando ejecute el contenedor de aplicaciones web.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda