es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿No se puede acceder a MySQL desde otro contenedor?

He leído este hilo y muchos otros tutoriales, pero todavía no puedo hacer que la conexión funcione.

Creé dos contenedores y están en la misma red net_a, y el contenedor MySQL se creó usando este comando:

docker run -itd –name mysql_a -p 3319:3306 -e MYSQL_ROOT_PASSWORD=passwd –network net_a mysql:latest

En el otro contenedor quiero acceder a una base de datos MySQL db_a usando PyMySQL, e intenté esto:

import pymysql.cursors
connection = pymysql.connect(
host=”mysql_a”,
user=”root”,
password=”passwd”,
database=”db_a”,
port=3319, charset=”utf8″)
cur = connection.cursor()

Pero surge un error:

-> 353 self.connect()
354
355 def enter(self):

/ usr / local / lib / python3.8 / dist-packages / pymysql / connections.py en
conectarse (self, zapatilla)
662 si DEBUG:
663 print (exc.traceback)
-> 664 raise exc
665
666 # Si e no es DatabaseError o IOError, es un error.

OperationalError: (2003, “No se puede conectar al servidor MySQL en ‘mysql_a’ ([Errno 111] Conexión rechazada)”)

Pensé que era porque no estaban en la misma red, luego pingueé el nombre del contenedor mysql_a desde el otro contenedor y mostró esto:

PING mysql_a (172.18.0.3) 56(84) bytes of data.
64 bytes from mysql_a.net_a (172.18.0.3): icmp_seq=1 ttl=64 time=0.078 ms
64 bytes from mysql_a.net_a (172.18.0.3): icmp_seq=2 ttl=64 time=0.068 ms
64 bytes from mysql_a.net_a (172.18.0.3): icmp_seq=3 ttl=64 time=0.061 ms
64 bytes from mysql_a.net_a (172.18.0.3): icmp_seq=4 ttl=64 time=0.061 ms

Me pregunto por qué no funciona? ¿Quizás las redes de puente de un solo host no funcionan en este escenario y debería aprender algo sobre redes de superposición de varios hosts?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que ha creado dos contenedores que están en la misma red net_a. También ha creado un contenedor MySQL usando el comando docker run -itd --name mysql_a -p 3319:3306 -e MYSQL_ROOT_PASSWORD=passwd --network net_a mysql:latest. Está intentando acceder a una base de datos MySQL db_a mediante PyMySQL, pero está obteniendo un error.

    Ha intentado hacer ping al nombre del contenedor mysql_a desde el otro contenedor y parece que ha tenido éxito. Es posible que las redes de puente de un solo host no estén funcionando en este escenario y que necesite aprender más acerca de las redes superpuestas de múltiples hosts.

Comments are closed.