0
点赞
收藏
分享

微信扫一扫

5-15|Docker报错OCI runtime exec failed: exec failed: unable to start container process: exec: “/bin/ba

Docker报错OCI runtime exec failed: exec failed: unable to start container process: exec: “/bin/bash“解决

报错

进入容器时,报如下错误:


[root@iZhp33j6fklnmhbf0lz2obZ admin]# docker exec -it admin_web_1 /bin/bash

OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown


解决

将 /bin/bash换成 /bin/sh成功


[root@iZhp33j6fklnmhbf0lz2obZ admin]# docker exec -it admin_web_1 /bin/sh

/code # ls

Dockerfile          app.py              bak                 docker-compose.yml  index.html


分析

制作镜像时使用了精简版,只装了sh命令,未安装bash。

如下都是精简版:


redis:alpine FROM

python:3.6-alpine


小拓展

Shell简介

Shell是一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。


sh(Bourne Shell)是一个早期的重要shell,1978年由史蒂夫·伯恩编写,并同Version 7 Unix一起发布。

bash(Bourne-Again Shell)是一个为GNU计划编写的Unix shell。1987年由布莱恩·福克斯创造。主要目标是与POSIX标准保持一致,同时兼顾对sh的兼容,是各种Linux发行版标准配置的Shell,在Linux系统上/bin/sh往往是指向/bin/bash的符号链接。


含义:


#! 是一个特殊标记,说明这是一个可执行的脚本。除了第一行,其他以#开头的都不再生效,为注释。

#! 后面是脚本的解释器程序路径。这个程序可以是shell,程序语言或者其他通用程序,常用的是bash、sh。


#!/bin/bash

#!/bin/sh



查看

查看系统可使用的shell类型


cat /etc/shells    


[root@iZhp33j6fklnmhbf0lz2obZ admin]#  cat /etc/shells

/bin/sh

/bin/bash

/usr/bin/sh

/usr/bin/bash


查看当前默认设置,一般在第一行


cat /etc/passwd    


[root@iZhp33j6fklnmhbf0lz2obZ admin]# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

查看当前sh状态


ll /bin/sh  

查看当前bash状态


ll /bin/bash  

[root@iZhp33j6fklnmhbf0lz2obZ admin]# ll /bin/sh

lrwxrwxrwx. 1 root root 4 Nov  9  2019 /bin/sh -> bash

[root@iZhp33j6fklnmhbf0lz2obZ admin]# ll /bin/bash

-rwxr-xr-x. 1 root root 1219248 Nov  9  2019 /bin/bash

举报

相关推荐

0 条评论