Andockfenster. Eine Verbindung von einem Behälter zu einem anderen Behälter mit mysql

Ich habe ein Netzwerk:

docker network create -d bridge --subnet 172.25.0.0/16 container_network

Ich habe einen container mit mysql läuft. Befehl ausführen:

docker run -tid -p 3306:3306 --name container_mysql --network container_network container_mysql

Und einem container mit code:

docker run -tid -v $(pwd):/code -p 5000:5000 --name container_code --network container_network container_code

Ich versuche, Zugriff auf mysql-DB von meinem container mit code, aber nichts funktioniert:

mysql -h 172.17.0.1 -P 3306 -u root -p
mysql -h container_mysql -P 3306 -u root -p
mysql -h 127.0.0.1 -P 3306 -u root -p
mysql -h 0.0.0.0 -P 3306 -u root -p

Erste Befehl gibt mir:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

Andere:

ERROR 2003 (HY000): Can't connect to MySQL server on <host> (111)

Irgendwelche Ideen, wie das Ziel zu erreichen?

Bearbeiten 1
Dockerfile für Mysql-container:

FROM ubuntu:16.04
RUN apt-get update
RUN echo "mysql-server mysql-server/root_password password 1234" | debconf-set-selections
RUN echo "mysql-server mysql-server/root_password_again password 1234" | debconf-set-selections
RUN apt-get install mysql-server -y
  • Haben Sie versucht, verwenden Sie das Andockfenster ‚ -Komponieren?
  • Ja. Meiner Meinung nach gibt es sogar mehr Probleme mit es, alles miteinander zu verbinden.
InformationsquelleAutor Snobby | 2017-01-30



One Reply
  1. 0

    Erste von allen, sollten Sie erwägen, die Verwendung networks statt link. Zuerst link werden sollte, veraltet sehr schnell. Zweitens, wenn man 2 container auf dem gleichen Netzwerk, docker hinzufügen, um die /etc/hosts beide Behälter eine Zeile für das auflösen der IP-vom-container-name. Dies ist für ermöglicht Ihnen den Zugriff auf einen container mit Ihrem Namen. In Ihrem Fall können Sie den Zugriff auf die mysql-container aus dem code-container wie diese


    mysql -h container_mysql

    Aussehen dieser link für mehr details über docker networking. Dieser link für mehr info über docker-compose und Vernetzung.

    • Ich habe versucht mysql -h container_mysql -P 3306 -u root -p schon. Es hat nicht funktioniert. Aktualisierte Frage mit docker Netzwerk.
    • Wird es gestartet, der mysql auf container?
    • Yep Starting MySQL database server mysqld ...done. bevor Sie versuchen, es zu verbinden
    • Das ist interessant :). Können Sie die ping – mysql_container aus mysql_code container? Können Sie sehen, wenn Sie eine Verbindung zu mysql_container mit docker exec und machen Sie einen Befehl ls -al. Endlich, ich glaube, Sie können entfernen Sie die port-exposition, wenn die Container sind beide im gleichen Netzwerk.
    • Ping von container_code zu container_mysql funktioniert: ping container_mysql: 6 packets transmitted, 6 received, 0% packet loss, time 5198ms. In container_mysql la -al gibt mir Ordner. ps aux | grep mysql gibt mir /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --log-syslog=1 --log-syslog-facility=daemon. Entfernt port auszusetzen, aber das gibt nichts
    • Ok, vielleicht sollte man konfigurieren von mysql für akzeptiert verbindungen von TCP statt socket. dies Sehen. Dies ist meine Letzte Lösung :). Tut mir Leid.
    • Danke für den Versuch:) Hat nicht geholfen auch aI haben keine Linie bind-address = 127.0.0.1 im /etc/mysql/my.cnf und nach Gewährung der Rechte zu verbinden, mit root von remote-host, den gleichen Fehler: ERROR 2003 (HY000): Can't connect to MySQL server on 'container_mysql' (111)
    • Versuchen bind-address = 0.0.0.0 und starten Sie den mysql service

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.