[英]MySQL container crash after /etc/mysql/my.cnf change, how to edit back?
我更改了一些mysql配置設置並設置了錯誤的內容,現在Docker容器不斷重新啟動,並且找不到在主機文件系統中進行編輯的my.cnf
文件。 我嘗試了aufs / diff文件夾,但到目前為止找不到它。 還嘗試了:
find / -name my.cnf -exec nano {} \;
但是它不會顯示我更改過的文件。 我試圖將config.v2.json
更改為啟動/bin/bash
而不是mysqld
並重新啟動了docker,但它使用正式的mysql容器映像啟動了mysqld
(由於主管或其他原因?)。
我正在為您的問題看到兩種可能的解決方案:
繞過MySQL映像的ENTRYPOINT
通過運行docker images
查找映像名稱,然后運行:
docker run -it --entrypoint="/bin/sh" OPTIONS image
這將帶您進入容器內的bash,然后從那里可以執行要查找my.cnf
文件的所有命令。 盡管我不知道是否可以從那里編輯文件,但是保存並嘗試再次運行它會起作用。 我沒試過
刪除舊圖像並使用正確的方法編輯my.cnf
文件
通過運行以下內容找到您的映像名稱: docker images
,然后通過運行docker rmi <image_name>
將其刪除
在MySQL Dockerhub上檢查文檔以獲取默認的MySQL映像,這很簡單,我引用:
使用自定義MySQL配置文件MySQL啟動
配置在文件/etc/mysql/my.cnf中指定,該文件又包括在/etc/mysql/conf.d目錄中找到的以.cnf結尾的所有文件。 該目錄中文件的設置將增加和/或覆蓋/etc/mysql/my.cnf中的設置。 如果要使用自定義的MySQL配置,則可以在主機上的目錄中創建備用配置文件,然后將該目錄位置安裝為mysql容器中的/etc/mysql/conf.d。
如果/my/custom/config-file.cnf是自定義配置文件的路徑和名稱,則可以像這樣啟動mysql容器(請注意,此命令僅使用自定義配置文件的目錄路徑):
$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
這將啟動一個新的容器some-mysql,其中MySQL實例使用來自/etc/mysql/my.cnf和/etc/mysql/conf.d/config-file.cnf的組合啟動設置,后者的設置優先。
從那時起,如果您在主機上創建my.cnf
文件,那么您將再也不會遇到此問題,因為您可以根據需要多次編輯該文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.