Im Schwarmmodus können Container in allen verbundenen Knoten bereitgestellt werden. Ich habe einen freigegebenen nfs-Ordner als mysql-Datenordner auf host1 erstellt.Mysql-Container kann keine Daten in einen NFS-Ordner laden
mkdir -p /nfs/data-volume
In einem anderen Host2 wird es in diesem freigegebenen Ordner bereitgestellt. Und fügte notwendige Erlaubnis hinzu. Ich probierte diesen NFS Freigabeordner, indem ich eine Textdatei darin las und schrieb. Es hat sehr gut funktioniert. (Es gab keinen Berechtigungsfehler) Nach diesen NFS-Konfiguration habe ich mein Container-Volume wie folgt definiert;
mysqldb-read:
image: demo/db-slave
ports:
- "3308:3306"
volumes:
- /nfs/data-volume:/var/lib/mysql
Das Ergebnis ist: Wenn mysql Container laufen auf host1, sehr gut funktioniert. Wenn der mysql-Container auf host2 ausgeführt wird, wird er nicht gestartet. Aber der Container verlässt nicht, der Thread bleibt dort und sieht aus wie etwas warten. Mit Prüfprotokoll Befehl ausführen:
docker logs -f mymysql
Es zeigt Protokolle wie folgt aus:
2017-06-07T02:40:13.627195Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2017-06-07T02:40:13.632313Z 0 [Note] mysqld (mysqld 5.7.18-log) starting as process 52 ...
2017-06-07T02:40:13.648010Z 0 [Note] InnoDB: PUNCH HOLE support available
2017-06-07T02:40:13.648054Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2017-06-07T02:40:13.648059Z 0 [Note] InnoDB: Uses event mutexes
2017-06-07T02:40:13.648062Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2017-06-07T02:40:13.648066Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
2017-06-07T02:40:13.648069Z 0 [Note] InnoDB: Using Linux native AIO
2017-06-07T02:40:13.648326Z 0 [Note] InnoDB: Number of pools: 1
2017-06-07T02:40:13.648770Z 0 [Note] InnoDB: Using CPU crc32 instructions
2017-06-07T02:40:13.651011Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2017-06-07T02:40:13.760444Z 0 [Note] InnoDB: Completed initialization of buffer pool
2017-06-07T02:40:13.829981Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
Nichts mehr zu diesem Protokoll, es auf dieser Linie hält. Ich habe versucht, in den Behälter um sich einzuloggen und Eingabebefehl
mysqld -uroot -proot
Das Zeigen Protokoll ist völlig gleich.
Ich fühle, dass dies von NFS verursacht wird. Aber ich habe gegoogelt und fast alle Materialien gefunden, die vorgeschlagen wurden, nfs zu benutzen, um Daten zu teilen. Gibt es jemanden, der diese Arbeit erfolgreich macht? Oder irgendeinen Vorschlag an mich?
Dank
Nur um ein paar Infos hinzuzufügen. Dein 'mysqld -uroot -proot' ist falsch. Sie sollten mysql (den Client) anstelle von mysqld (dem Server) ausführen – Robert