天行健,君子以自強(qiáng)不息;地勢坤,君子以厚德載物。
每個人都有惰性,但不斷學(xué)習(xí)是好好生活的根本,共勉!
文章均為學(xué)習(xí)整理筆記,分享記錄為主,如有錯誤請指正,共同學(xué)習(xí)進(jìn)步。
問題背景
運(yùn)行鏡像生成容器時掛載目錄失敗
執(zhí)行的命令如下
sudo docker run --name tomcat-libai -it -p 8099:8080 -d -v /tomcat-libai/tomcat:/usr/local/tomcat tomcat:latest
為了方便看我們使用\
換行
sudo docker run \
--name tomcat-libai \
-it \
-p 8099:8080 \
-d \
-v /tomcat-libai/tomcat:/usr/local/tomcat \
tomcat:latest
執(zhí)行命令后報(bào)錯如下
報(bào)錯代碼復(fù)制過來完整看一遍
docker: Error response from daemon: failed to create task for container:
failed to create shim task: OCI runtime create failed: runc create failed:
unable to start container process: exec: "catalina.sh":
executable file not found in $PATH: unknown.
大致意思就是因?yàn)槲募荒苷业街付ǖ淖兞柯窂綄?dǎo)致創(chuàng)建失?。ú恢膶Σ粚ξ餭ue =_ =)
以下解決方案內(nèi)容均為個人理解和嘗試,如果不適用請參考別的文章。
解決方案一
使用命令查看鏡像交互路徑
sudo docker history tomcat
發(fā)現(xiàn)交互路徑為/bin/sh
在使用鏡像運(yùn)行容器掛載時,命令最后加上這個交互路徑,如下
sudo docker run --name tomcat-libai -it -p 8099:8080 -d -v /tomcat-libai/tomcat:/usr/local/tomcat tomcat:latest /bin/sh
使用換行符更方便看,如下
sudo docker run \
--name tomcat-libai \
-it \
-p 8099:8080 \
-d \
-v /tomcat-libai/tomcat:/usr/local/tomcat \
tomcat:latest \
/bin/sh
運(yùn)行后返回容器ID,無報(bào)錯
此方法可以掛載成功
此方法有個問題,就是掛載成功后,容器中Tomcat目錄中啥也沒有,可能是將宿主機(jī)的空目錄同步到容器,就變成了空的,也就是說,掛載目錄前這個目錄不能有東西,不然會自動以宿主機(jī)空目錄為準(zhǔn)
解決方案二
問題分析:
首先想一下,宿主機(jī)中的目錄和容器中的目錄掛載,那么最初的掛載如果兩邊目錄都有文件或目錄,且內(nèi)容不同,掛載后會是什么樣的結(jié)果呢?是宿主機(jī)中的目錄中出現(xiàn)容器目錄的內(nèi)容?還是容器目錄中出現(xiàn)了宿主機(jī)的內(nèi)容?亦或是兩邊目錄中都出現(xiàn)了對方的內(nèi)容?
答案我并沒有去驗(yàn)證,但我用宿主機(jī)的一個空目錄去掛載tomcat容器的tomcat目錄,出現(xiàn)了都為空的現(xiàn)象。大家都知道tomcat中是有文件目錄和文件的,且webapps這個文件夾是大家熟知的。但是宿主機(jī)中tomcat文件夾中確實(shí)空的。
所以我們以掛載Tomcat目錄為例,掛載目錄選擇子文件夾或創(chuàng)建新的子文件夾,如webapps,盡量不要使用主目錄也就是最頂層的目錄來掛載,執(zhí)行命令
sudo docker --name tomcat-libai -it -p 8099:8080 -d -v /tomcat-libai/tomcat/webapps:/usr/local/tomcat/webapps tomcat:latest
換行表示文章來源:http://www.zghlxwxcb.cn/news/detail-614786.html
sudo docker run \
--name tomcat-libai \
-it \
-p 8099:8080 \
-d \
-v /tomcat-libai/tomcat/webapps:/usr/local/tomcat/webapps \
tomcat:latest
可正常掛載,且不用使用類似/bin/sh的鏡像交互命令文章來源地址http://www.zghlxwxcb.cn/news/detail-614786.html
到了這里,關(guān)于Docker掛載目錄失敗問題解決的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!