スウォームモードでは、コンテナは任意の結合ノードに展開できます。私はhost1にmysqlデータフォルダとして共有nfsフォルダを作成しました。Mysqlコンテナはnfsフォルダにデータをマウントできません
mkdir -p /nfs/data-volume
別のホスト2では、この共有フォルダにマウントされます。そして、必要な許可を加えました。私はこのnfs共有フォルダにテキストファイルを読み書きしてみました。それはとてもうまくいった。 (許可エラーはありませんでした) これらのnfs設定の後、私はこのようなコンテナボリュームを定義しました。
mysqldb-read:
image: demo/db-slave
ports:
- "3308:3306"
volumes:
- /nfs/data-volume:/var/lib/mysql
結果は次のとおりです。mysqlのコンテナがhost1で実行する場合は、 非常に良い作品。 mysqlコンテナがhost2で実行されている場合、起動しません。しかし、コンテナは出なくなり、スレッドはそこにとどまり、何かを待っているように見えます。チェックlogコマンドを実行することにより は:
docker logs -f mymysql
それはこのようにログを示しています。このログに
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().
何よりも、それはこの行で停止します。 私はコンテナにログインしようとした、と入力コマンド
mysqld -uroot -proot
示すログが全く同じです。
これはnfsによって引き起こされたと思います。しかし、私はグーグルでデータを共有するためにnfsの使用を提案しているほとんどすべての資料を見つけました。この仕事を成功させる人は誰ですか?または私に何か提案?
おかげ
情報を追加するだけです。あなたの 'mysqld -root -proot'は間違っています。 mysqld(サーバ)の代わりにmysql(クライアント)を実行する必要があります。 – Robert