最近在工作中使用Docker容器的時(shí)候,遇到了一個(gè)問(wèn)題,就是無(wú)法進(jìn)入MySQL容器。在終端輸入docker exec -it 容器ID /bin/bash 命令后,提示報(bào)錯(cuò)“Error response from daemon: Container xxx is not running”。
經(jīng)過(guò)查閱資料和實(shí)際操作,發(fā)現(xiàn)問(wèn)題的原因是在啟動(dòng)MySQL容器的時(shí)候,沒(méi)有指定運(yùn)行的命令。默認(rèn)情況下,Docker會(huì)運(yùn)行CMD命令,但MySQL鏡像并沒(méi)有CMD命令。因此,需要在啟動(dòng)容器的時(shí)候手動(dòng)指定MySQL的運(yùn)行命令。
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=密碼 mysql:latest mysqld
在啟動(dòng)MySQL容器的時(shí)候,增加了mysqld命令,表示容器啟動(dòng)后會(huì)運(yùn)行mysqld服務(wù)。
如果在啟動(dòng)容器時(shí)已經(jīng)指定了CMD命令,可以嘗試修改Dockerfile文件,將CMD命令替換成ENTRYPOINT命令,這樣就可以在容器啟動(dòng)后進(jìn)入bash命令行。
FROM mysql:latest ENTRYPOINT ["bash", "-c", "mysqld && tail -f /dev/null"]
本文只是介紹了在Docker中無(wú)法進(jìn)入MySQL容器的解決方案之一,對(duì)于其他類似的問(wèn)題,仍需具體分析具體解決。