Dockerプロファイルの変更を記録するとコンテナが起動しなくなります


問題の説明
MySQL5.7デフォルトでonly_を有効にするfull_group_byオプションで、プロファイル(/etc/mysql/mysql.conf.d/mysqld.cnf)に追加しました
SET sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

dockerコンテナの構成情報を変更しましたが、プロファイルが間違っていたり、プロファイルのフォーマットが間違っていたりして、コンテナが再起動できません.
方法1
dockerコンテナのいくつかの構成情報は一般的にvar/lib/docker/overlayの下にあります.このディレクトリには対応する構成が見つかり、変更後に再起動できます.
1.クエリー・ログ
docker logs    /  id
ERROR: mysqld failed while attempting to check config
command was: "mysqld --verbose --help"

2019-08-20T12:20:57.919628Z 0 [ERROR] unknown variable 'SET sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
2019-08-20T12:20:57.923248Z 0 [ERROR] Aborting

ERROR: mysqld failed while attempting to check config
command was: "mysqld --verbose --help"

2019-08-20T12:21:58.445399Z 0 [ERROR] unknown variable 'SET sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
2019-08-20T12:21:58.448990Z 0 [ERROR] Aborting

エラーから分かるように、私はプロファイルにエラーのパラメータSET sqlを設定しました.mode=...このパラメータはmysqlコンテナプロファイルmysqldに設定します.cnfにあるので、プロファイルを見つけてSET sql_mode=... 削除
2.ファイルの検索
mandy@ubuntu:~$ sudo find / -name mysqld.cnf
/tmp/mysqld.cnf
/var/lib/docker/overlay2/967bef783b7ae60e477382ac25f015793f8e3047f7bbca203759ed1ab1b2a661/diff/etc/mysql/mysql.conf.d/mysqld.cnf
/var/lib/docker/overlay2/ddef71f08d9dc90ceb354850a89e59817c5e730b8fdea07f0916eb95e2637dce/diff/etc/mysql/mysql.conf.d/mysqld.cnf
/var/lib/docker/overlay2/ddef71f08d9dc90ceb354850a89e59817c5e730b8fdea07f0916eb95e2637dce/merged/etc/mysql/mysql.conf.d/mysqld.cnf

メモ:複数のmysqlコンテナを起動すると複数のmysqldが表示されるなど、複数のプロファイルが見つかります.cnf、あなたの現在のエラーに対応するmysqldを見つけます.cnfを変更して再起動します.
3.プロファイルの変更、再起動
方法2
dockerコンテナのプロファイルをホストにコピーし、ホストで変更し、変更が完了したらdockerコンテナにコピーします.
1.dockerコンテナのファイルをホストにコピーする
docker cp   id:docker               
docker cp 2f9845c5e47810a984c5e2ae5a5e5c1e041a746079682e6b464089ca1b1c5fc2:/etc/mysql/mysql.conf.d/mysqld.cnf /tmp/mysqld.cnf  

2.プロファイルでエラーが発生した部分の変更
3.構成ファイルをdockerコンテナに
docker cp          id:docker         
docker cp /tmp/mysqld.cnf 2f9845c5e47810a984c5e2ae5a5e5c1e041a746079682e6b464089ca1b1c5fc2:/etc/mysql/mysql.conf.d/mysqld.cnf

4.容器の再起動
まとめ
どちらの方法も、コンテナが起動できない場合に、コンテナ内のプロファイルを変更することを解決します.個人的には2つ目の方法をお勧めします.主にどのプロファイルがホストにコピーできるかを知っていて、自由に変更します.
参照先:
  • only_についてfull_group_by問題はこの
  • を参照してください.
  • Docker起動できないコンテナのプロファイル
  • を変更