Docker容器啟動(dòng)報(bào)錯(cuò)“permission?denied”原因分析及解決方案
Docker 容器啟動(dòng)報(bào)錯(cuò)“permission denied”原因及解決方案詳解
在使用 Docker 容器部署服務(wù)時(shí),經(jīng)常會(huì)通過(guò) docker-compose.yml 進(jìn)行容器編排,并映射本地的啟動(dòng)腳本,例如:
volumes: - ./entrypoint.sh:/ragflow/entrypoint.sh
但你可能會(huì)遇到如下報(bào)錯(cuò),容器無(wú)法正常啟動(dòng):
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: error during container init: exec: "./entrypoint.sh": permission denied: unknown
本文將詳細(xì)解釋這一錯(cuò)誤的原因,并給出簡(jiǎn)潔有效的解決方案。
問(wèn)題分析
錯(cuò)誤關(guān)鍵在于:
exec: "./entrypoint.sh": permission denied
這說(shuō)明容器內(nèi)執(zhí)行腳本 entrypoint.sh 時(shí),操作系統(tǒng)檢測(cè)到該文件沒(méi)有執(zhí)行權(quán)限。雖然該文件在本地存在并成功掛載到容器內(nèi),但如果本地文件本身就沒(méi)有可執(zhí)行權(quán)限,容器會(huì)原樣繼承此權(quán)限狀態(tài),從而導(dǎo)致運(yùn)行失敗。
?? Docker 并不會(huì)自動(dòng)為掛載進(jìn)容器的文件賦予執(zhí)行權(quán)限。
解決方案
步驟一:為本地腳本添加可執(zhí)行權(quán)限
運(yùn)行以下命令:
chmod +x ./entrypoint.sh
這會(huì)為 entrypoint.sh 添加用戶(hù)的執(zhí)行權(quán)限(u+x),讓 Docker 在啟動(dòng)容器時(shí)能夠正常執(zhí)行它。
步驟二:重新啟動(dòng)容器
如果你使用的是 docker-compose,運(yùn)行:
docker-compose down docker-compose up -d
即可正常啟動(dòng)。
示例背景
在我的項(xiàng)目 ragflow 中,我的 docker-compose.yml 文件中有如下內(nèi)容:
services:
ragflow-server:
image: ragflow-server
volumes:
- ./entrypoint.sh:/ragflow/entrypoint.sh
working_dir: /ragflow
entrypoint: ./entrypoint.sh
啟動(dòng)時(shí)報(bào)錯(cuò)“permission denied”,最后通過(guò)添加執(zhí)行權(quán)限成功解決:
chmod +x ./entrypoint.sh
總結(jié)建議
使用
volume映射文件時(shí),本地權(quán)限會(huì)直接影響容器內(nèi)權(quán)限;推薦在構(gòu)建鏡像或運(yùn)行容器前,統(tǒng)一處理所有腳本的權(quán)限;
你也可以將腳本權(quán)限處理寫(xiě)入 Dockerfile(如果不是使用掛載方式):
RUN chmod +x /ragflow/entrypoint.sh
結(jié)語(yǔ)
這是一個(gè)非常常見(jiàn)但容易忽視的問(wèn)題。尤其在團(tuán)隊(duì)協(xié)作或 CI/CD 環(huán)境中,確保關(guān)鍵腳本具備適當(dāng)權(quán)限是保障容器順利運(yùn)行的基礎(chǔ)。
如果你也遇到了類(lèi)似的 permission denied 問(wèn)題,希望本文能幫你快速定位并解決問(wèn)題。
到此這篇關(guān)于Docker容器啟動(dòng)報(bào)錯(cuò)“permission denied”原因分析及解決方案的文章就介紹到這了,更多相關(guān)Docker容器啟動(dòng)報(bào)錯(cuò)permission denied內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pod調(diào)度將 Pod 指派給節(jié)點(diǎn)
這篇文章主要為大家介紹了pod調(diào)度將Pod指派給節(jié)點(diǎn) 示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
docker安裝并運(yùn)行rabbitmq的實(shí)例代碼
在本篇文章里小編給大家整理了關(guān)于docker安裝并運(yùn)行rabbitmq的實(shí)例代碼以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-10-10
Ubuntu 下通過(guò) Docker 部署 NGINX 服務(wù)器的步驟詳解
今天分享如何在三豐云免費(fèi)服務(wù)器上使用Docker部署NGINX服務(wù)器,Docker容器化平臺(tái)提升應(yīng)用可移植性,NGINX作為高性能HTTP和反向代理服務(wù)器,感興趣的朋友跟隨小編一起看看吧2025-02-02
idea?連接遠(yuǎn)程?docker?并部署項(xiàng)目到?docker的過(guò)程
這篇文章主要介紹了idea連接遠(yuǎn)程docker并部署項(xiàng)目到docker,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-10-10
詳解docker compose搭建lnmpr環(huán)境實(shí)現(xiàn)
這篇文章主要為大家介紹了使用docker compose搭建lnmpr環(huán)境實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
淺談Docker 容器數(shù)據(jù)卷掛載小結(jié)
本篇文章主要介紹了淺談Docker 容器數(shù)據(jù)卷掛載小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
docker從容器中訪(fǎng)問(wèn)到宿主機(jī)3種方法
這篇文章主要給大家介紹了關(guān)于docker從容器中訪(fǎng)問(wèn)到宿主機(jī)的3種方法,某些時(shí)候,我們會(huì)有在容器內(nèi)容訪(fǎng)問(wèn)宿主機(jī)某個(gè)服務(wù)的需求,需要的朋友可以參考下2023-10-10

