docker啟動(dòng)MySQL容器失敗原因分析以及排查記錄
docker啟動(dòng)MySQL容器失敗原因及排查記錄
背景
最近在嘗試容器搭建MySQL集群時(shí)碰到一個(gè)錯(cuò)誤,啟動(dòng)MySQL時(shí)碰到一個(gè),經(jīng)過(guò)排查解決,在此做一個(gè)記錄
問(wèn)題過(guò)程
啟動(dòng)MySQL容器
$ sudo docker run -d -p 3306:3306 \ > --name mysql \ > -v /opt/mysql/log:/var/log/mysql \ > -v /opt/mysql/data:/var/lib/mysql \ > -v /opt/mysql/conf:/etc/mysql \ > -e MYSQL_ROOT_PASSWORD=root \ > mysql 3cf4012772cc2e22732aa6d5eb716d7b290a95da25b750d4a1189e77ab985f33 # 運(yùn)行后,查看運(yùn)行中的容器發(fā)現(xiàn)沒(méi)有剛啟動(dòng)MySQL [bing@centosone nginx]$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5c7b103435d1 nginx:latest "/docker-entrypoint.…" 8 hours ago Up 8 hours 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:85->80/tcp, [::]:85->80/tcp my-nginx 28cda42916c3 nginx:latest "/docker-entrypoint.…" 15 hours ago Up 15 hours 0.0.0.0:82->80/tcp, [::]:82->80/tcp
mysql/log:存儲(chǔ)MySQL日志mysql/data:是數(shù)據(jù)庫(kù)文件(庫(kù)表數(shù)據(jù)存放處)存放的地方。必須要掛載到容器外,否則容器重啟一切數(shù)據(jù)消失。mysql/conf:mysql配置,mysql啟動(dòng)時(shí)讀取配置
查看所有容器docker ps -a
發(fā)現(xiàn)MySQL是已經(jīng)exit了
$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4e163949caa2 mysql "docker-entrypoint.s…" 20 minutes ago Exited (1) 17 minutes ago mysql
然后嘗試刪除容器重啟還是一樣
$ sudo docker rm 4e1 4e1 $ sudo docker run -p 3306:3306 --name mysql -v /opt/mysql/log:/var/log/mysql -v /opt/mysql/data:/var/lib/mysql -v /opt/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql b3153c7d9d33f28e9808fbd6f8feea44ac12e45f9aec637a789a29b9f7f5dcd2 # 仍然是exit狀態(tài) $ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b3153c7d9d33 mysql "docker-entrypoint.s…" 3 seconds ago Exited (1) 2 seconds ago mysql
查看容器日志
$ sudo docker logs --tail 100 --follow --timestamps {容器名稱}
問(wèn)題原因
如上圖,查看日志發(fā)現(xiàn)是沒(méi)有配置文件目錄,我們的命令指定的配置文件路徑是/etc/mysql/,而容器讀取的配置文件路徑是/etc/mysql/conf.d/。
在這一行-v /opt/mysql/conf:/etc/mysql,我們將主機(jī)路徑/opt/mysql/conf掛載到容器路徑/etc/mysql下,實(shí)際上容器配置在/etc/mysql/conf.d/目錄下。
修改啟動(dòng)命令
修改啟動(dòng)命令中的配置文件路徑,再次重新啟動(dòng)成功,如下:
sudo docker run -p 3306:3306 --name mysql \ -v /opt/mysql/log:/var/log/mysql \ -v /opt/mysql/data:/var/lib/mysql \ -v /opt/mysql/conf:/etc/mysql/conf.d \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql ef8d15ff3c2828b718357ad7d41117ca46c3fec7bb6b3a365c886926b275fbb8 # 啟動(dòng)成功 sudo docker ps [sudo] bing 的密碼: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ef8d15ff3c28 mysql "docker-entrypoint.s…" 11 minutes ago Up 11 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp
mysql容器終于是 Up 狀態(tài)了
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker中運(yùn)行PostgreSQL容器的簡(jiǎn)單步驟
這篇文章主要給大家介紹了關(guān)于docker中運(yùn)行PostgreSQL容器的簡(jiǎn)單步驟,隨著docker的廣泛應(yīng)用,為了提供便利的管理,PostgreSQL數(shù)據(jù)庫(kù)也支持docker的安裝方式,需要的朋友可以參考下2023-08-08
docker 報(bào)錯(cuò) Exited (1) 4 minutes ago的原因分析
這篇文章主要介紹了docker 報(bào)錯(cuò) Exited (1) 4 minutes ago的原因分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
數(shù)據(jù)卷(Data Volumes)及dockefile詳解
在生產(chǎn)環(huán)境中使用Docker,往往需要對(duì)數(shù)據(jù)進(jìn)行持久化,或者需要在多個(gè)容器之間進(jìn)行數(shù)據(jù)共享,這必然涉及容器的數(shù)據(jù)管理操作,今天給大家介紹下數(shù)據(jù)卷(Data Volumes)及dockefile的相關(guān)知識(shí),感興趣的朋友一起看看吧2023-01-01
多個(gè)docker compose啟動(dòng)的容器之間通信實(shí)現(xiàn)過(guò)程
文章討論了Docker Compose中多組容器編排的問(wèn)題,指出默認(rèn)情況下各組容器網(wǎng)絡(luò)會(huì)隔離,為了解決跨組訪問(wèn)的問(wèn)題,文章建議創(chuàng)建一個(gè)公共網(wǎng)絡(luò),并將各組容器組的默認(rèn)網(wǎng)絡(luò)配置改為該公共網(wǎng)絡(luò),同時(shí)啟用外部連接,這樣可以實(shí)現(xiàn)跨組訪問(wèn),解決網(wǎng)絡(luò)隔離的限制2025-09-09
Docker容器項(xiàng)目無(wú)法訪問(wèn)MySQL的問(wèn)題排查與解決策略
本文分析了Docker容器連接MySQL時(shí)常見(jiàn)的問(wèn)題,并提供了解決方案,主要問(wèn)題包括網(wǎng)絡(luò)隔離、服務(wù)啟動(dòng)順序、權(quán)限配置等,解決方案包括使用自定義網(wǎng)絡(luò)、連接宿主機(jī)MySQL、健康檢查與啟動(dòng)等待、端口映射與防火墻配置、MySQL權(quán)限配置和Host網(wǎng)絡(luò)模式等,需要的朋友可以參考下2026-04-04
docker容器狀態(tài)轉(zhuǎn)換管理命令實(shí)例詳解
Docker容器只是一個(gè)運(yùn)行于宿主操作系統(tǒng)host?OS上的應(yīng)用進(jìn)程,所以你需要一個(gè)鏡像來(lái)運(yùn)行它,Docker鏡像以進(jìn)程的方式運(yùn)行時(shí)就叫做Docker容器,這篇文章主要給大家介紹了關(guān)于docker容器狀態(tài)轉(zhuǎn)換管理命令的相關(guān)資料,需要的朋友可以參考下2022-05-05
關(guān)于ROS2安裝與docker環(huán)境使用
大家好,本篇文章主要講的是關(guān)于ROS2安裝與docker環(huán)境使用,感興趣的同學(xué)趕快來(lái)看看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
一次docker錯(cuò)誤的耗時(shí)排查過(guò)程記錄
這篇文章主要給大家介紹了一次docker錯(cuò)誤的耗時(shí)排查過(guò)程記錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

