docker啟動(dòng)MySQL容器失敗原因分析以及排查記錄
docker啟動(dòng)MySQL容器失敗原因及排查記錄
背景
最近在嘗試容器搭建MySQL集群時(shí)碰到一個(gè)錯(cuò)誤,啟動(dòng)MySQL時(shí)碰到一個(gè),經(jīng)過排查解決,在此做一個(gè)記錄
問題過程
啟動(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)沒有剛啟動(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ù)庫文件(庫表數(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 {容器名稱}
問題原因
如上圖,查看日志發(fā)現(xiàn)是沒有配置文件目錄,我們的命令指定的配置文件路徑是/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)文章
詳解利用ELK搭建Docker容器化應(yīng)用日志中心
這篇文章主要介紹了詳解利用ELK搭建Docker容器化應(yīng)用日志中心,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04docker文件存放路徑, 獲取容器啟動(dòng)命令操作
這篇文章主要介紹了docker文件存放路徑, 獲取容器啟動(dòng)命令操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11詳解Docker 容器基礎(chǔ)系統(tǒng)鏡像打包
這篇文章主要介紹了詳解Docker 容器基礎(chǔ)系統(tǒng)鏡像打包,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12Docker利用DockerFile創(chuàng)建部署NVIDIA+PyTorch容器的詳細(xì)過程
這篇文章主要介紹了Docker利用DockerFile創(chuàng)建部署NVIDIA+PyTorch容器的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06Docker 多主機(jī)網(wǎng)絡(luò)通信詳細(xì)介紹
這篇文章主要介紹了Docker 多主機(jī)網(wǎng)絡(luò)通信詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-10-10