這篇文章主要介紹了docker run啟動的容器掛掉了數據怎么解決的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇docker run啟動的容器掛掉了數據怎么解決文章都會有所收獲,下面我們一起來看看吧。
專注于為中小企業提供成都網站設計、成都網站建設、外貿網站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業康保免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了成百上千家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。
情景描述
在某個系統中,功能性的服務使用 docker stack deploy xxx
啟動,某個國產數據庫的服務單獨使用 docker run xxx
啟動,數據庫服務沒有將存儲的位置掛載出來;
結果客戶重啟了服務器…再登錄到服務器重啟服務的時候,發現了一個問題,之前數據庫里的數據可能會消失(如果再使用 docker run 啟動的話)。
解決辦法
嘗試1
起初想的是數據肯定丟了,那就只能重新折騰一次數據了,但工作量太大了…
不過也沒辦法,下次再啟動,把存儲掛載到硬盤就好了,orz
不過和同事交流了之后,發現了一個更為簡單(但也不是永久的辦法),見嘗試2
嘗試2
同事提到,可以使用 docker start container_name
再次將容器啟動,這樣的話數據還在。后面嘗試了一下,果然數據還在……雖然也只是個臨時的解決辦法
后面想了一下,docker啟動的鏡像,如果不將數據映射出來的話,會存儲在默認的volume;即使用docker restart xxx重啟容器,那變動的數據也還是在的;也就是說在這個地方,服務器重啟了,容器掛掉了(使用docker ps查看,其容器狀態是exited),但其實之前的數據還會在默認的volume下,只有刪除掉容器的時候,變動的數據才會丟失。
驗證測試
隨便打包一個鏡像,啟動容器,創建一個文件,再停止,再啟動,查看文件是否存在
# 啟動容器 ? docker_start_test docker run -itd --name docker_run_test 4cbf48630b46 ping 127.0.0.1 d6278f537113122d4ccbe00950790750215c5a09002bcbd1ef6f9e660fc9eaac ? docker_start_test docker ps -a container id image command created status ports names d6278f537113 4cbf48630b46 "ping 127.0.0.1" 3 seconds ago up 2 seconds docker_run_test # 進容器增加文件 ? docker_start_test docker exec -it docker_run_test /bin/sh sh-4.2# pwd / sh-4.2# touch test sh-4.2# exit exit # 重啟容器 ? docker_start_test docker stop docker_run_test docker_run_test ? docker_start_test docker ps -a | grep docker_run_test d6278f537113 4cbf48630b46 "ping 127.0.0.1" about a minute ago exited (137) 12 seconds ago docker_run_test # 進去查看文件是否存在 ? docker_start_test docker start docker_run_test docker_run_test ? docker_start_test docker exec -ti docker_run_test /bin/sh sh-4.2# ls anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys test tmp usr var
可以看到,文件 test 依然存在;此時如果停掉容器,使用docker rm刪掉容器,再重新啟動一個同名容器,可以看到,容器內不再有test文件了
# stop / rm掉容器 ? docker_start_test docker stop docker_run_test docker_run_test ? docker_start_test docker ps -a | grep docker_run d6278f537113 4cbf48630b46 "ping 127.0.0.1" 7 minutes ago exited (137) 13 seconds ago docker_run_test ? docker_start_test docker rm d6278f537113 d6278f537113 # 啟動新的同名容器 ? docker_start_test docker run -itd --name docker_run_test 4cbf48630b46 ping 127.0.0.1 99a6f5df0a86e4c07abf184e322a23e4fbec89ff354691459cdac8fcd8687ba3 # 進入容器驗證 ? docker_start_test docker exec -ti docker_run_test /bin/sh sh-4.2# ls anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var sh-4.2# ls test ls: cannot access test: no such file or directory
docker run的說明
從官網看到,start命令的作用是:
start one or more stopped containers
emmm,挺直白,沒什么可說的
ps
其實最好的辦法,就是將容器的存儲目錄掛載出來…另外,一般來講似乎數據庫服務不應該使用容器啟動
關于“docker run啟動的容器掛掉了數據怎么解決”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“docker run啟動的容器掛掉了數據怎么解決”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道。
當前名稱:dockerrun啟動的容器掛掉了數據怎么解決
鏈接分享:http://m.newbst.com/article12/jeiidc.html
成都網站建設公司_創新互聯,為您提供軟件開發、做網站、靜態網站、響應式網站、微信小程序、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯