Přečetl jsem si toto vlákno a mnoho další návody, ale stále se nemůžete dostat připojení k práci.
Vytvořil jsem dva kontejnery a jsou na stejné síti net_a
a MySQL kontejner byl vytvořen pomocí tohoto příkazu:
docker run -itd --name mysql_a -p 3319:3306 -e MYSQL_ROOT_PASSWORD=passwd --network net_a mysql:latest
V jiné nádobě chci pro přístup k databázi MySQL db_a
pomocí PyMySQL, a snažil jsem se toto:
import pymysql.cursors
connection = pymysql.connect(
host="mysql_a",
user="root",
password="passwd",
database="db_a",
port=3319, charset="utf8")
cur = connection.cursor()
Ale chyba araises:
--> 353 samostatně.connect() 354 355 def enter(self):
/usr/local/lib/python3.8/dist-packages/pymysql/connections.py v připojení(self, ponožky) 662-li LADĚNÍ: 663 tisku(exc.traceback) --> 664 zvýšit exc 665 666 #, Pokud e je ani DatabaseError nebo IOError, je To chyba.
OperationalError: (2003, "nelze se připojit k MySQL serveru 'mysql_a' ([Errno 111] Connection refused)")
Myslel jsem, že to bylo proto, že nejsou na stejné síti, pak jsem ping kontejner jméno mysql_a
z jiné nádoby, a to ukazuje toto:
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
Zajímalo by mě, proč to nefunguje? Možná single-host bridge sítě nefungují v tomto případě, a já by se měli naučit něco o multi-host překrytí sítí?