Docker報(bào)錯(cuò):OCI?runtime?exec?failed:?exec?failed:?container_linux.go:380:?starting?container?process的解決方法
詳細(xì)信息
[root@centOS7 ~]# docker exec -it 3cae7605916d /bin/bash
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown
老規(guī)矩:先上答案 把腳本類型 /bin/bash,嘗試換為 /bin/sh 試一下,如果你想對(duì)兩種shell的區(qū)別有深入了解,點(diǎn)擊這里。
注意:
如果你在Dockerfile中引用了自定義腳本,比如:entrypoint: ./entrypoint.sh,如果沒有單獨(dú)給該腳本通過chmod +x ./entrypoint.sh 添加執(zhí)行權(quán)限,也可能會(huì)報(bào)這個(gè)錯(cuò)誤。
前言
在docker學(xué)習(xí)中,大部分容器進(jìn)入的腳本都是/bin/bash,比如tomcat,所以不假思索的認(rèn)為其他容器進(jìn)入方式的腳本類型也是/bin/bash,然而這是一個(gè)誤區(qū)。
解析步驟
1.首先,了解一些腳本的類型
[root@centOS7 ~]cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh [root@centOS7 ~]#
本機(jī)腳本解釋器類型有4種。最常見的是前兩種 (usr)/bin/sh和(usr)/bin/bash,還有一些不是很常見的腳本類型:ash、ksh、csh、zsh等,不同的shell都有自己的特點(diǎn)以及用途。
2.進(jìn)入Tomcat容器內(nèi)部,查Tomcat啟動(dòng)腳本解釋器類型
docker exec -it tomcat /bin/bash ls cd bin && ls cat cat startup.sh
不難發(fā)現(xiàn),它的啟動(dòng)腳本解釋器類型是/usr/bin/bash
3.進(jìn)入Nginx容器內(nèi)部,查Nginx啟動(dòng)腳本解釋器類型
exit #退出tomcat容器 docker ps #查看正在運(yùn)行的容器列表 docker exec -it 3cae7605916d /bin/sh #進(jìn)入nginx容器 cd /etc/init.d && ls cat nginx #并不是想要/bin/sh結(jié)果
發(fā)現(xiàn),首行并不是想要的結(jié)果/bin/bash,不放棄繼續(xù)找
find / -name nginx -type f #僅查找nginx啟動(dòng)文件 find / -name nginx #過濾出目錄下所有的nginx
最后的最后,怎么找nginx的啟動(dòng)腳本,期望能找到首行的解釋器是/bin/sh,但是事與愿違,不是亂碼就是/sbin/openrc-run。
總結(jié)
經(jīng)過各種求教,得到的答案,nginx:alpine精簡(jiǎn)版,在做鏡像的時(shí)候,只裝了sh,沒有裝bash,所以用不了bash。shell類型有很多種,但是sh類型的shell是最基礎(chǔ)的,所以大部分鏡像都支持。這就不難理解為什么docker exec -it 可以使用 /bin/sh進(jìn)入鏡像內(nèi)部了。
docker exec使用小技巧:后面的/bin/或者/usr/bin/可以省略掉,直接寫sh 或者 bash。
到此這篇關(guān)于Docker報(bào)錯(cuò):OCI runtime exec failed: exec failed: container_linux.go:380: starting container process解決的文章就介紹到這了,更多相關(guān)Docker報(bào)錯(cuò):OCI runtime exec failed內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker容器內(nèi)部無法訪問外網(wǎng)原因以及解決辦法
最近在工作時(shí)遇到一個(gè)問題,這里給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于Docker容器內(nèi)部無法訪問外網(wǎng)原因以及解決辦法,文中給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06Jenkins打包微服務(wù)構(gòu)建Docker鏡像運(yùn)行的實(shí)現(xiàn)
本文主要介紹了Jenkins打包微服務(wù)構(gòu)建Docker鏡像運(yùn)行的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09Docker如何使用nginx搭建tomcat集群(圖文詳解)
這篇文章主要介紹了Docker使用nginx搭建tomcat集群的教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12docker部署firefox瀏覽器實(shí)現(xiàn)遠(yuǎn)程訪問
在使用docker時(shí),默認(rèn)情況下只能在本地進(jìn)行訪問,本文就來介紹一下docker部署firefox瀏覽器實(shí)現(xiàn)遠(yuǎn)程訪問,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01Windows?Server?2012?R2?安裝?Docker的詳細(xì)步驟
這篇文章主要介紹了Windows?Server?2012?R2?安裝?Docker,在這個(gè)給大家說明下使用windows10、Windows?Server?2016以上系統(tǒng)可直接使用安裝包,低版本系統(tǒng)需要使用?Docker?Toolbox?來進(jìn)行安裝使用?Docker,需要的朋友可以參考下2022-04-04Docker開啟遠(yuǎn)程訪問的實(shí)現(xiàn)方式
這篇文章主要介紹了Docker開啟遠(yuǎn)程訪問的實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01使用 Docker 搭建 Laravel 本地環(huán)境的教程詳解
laradock 是一個(gè)包含全功能用于 docker 的 PHP 運(yùn)行環(huán)境,使用 docker-compose 方式部署,本文重點(diǎn)給大家介紹使用 Docker 搭建 Laravel 本地環(huán)境的方法,感興趣的朋友一起看看吧2017-10-10