进入容器时,报如下错误
- dockeruser@dell-PowerEdge-R740:~$ docker exec -it daf2 /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
dockeruser@dell-PowerEdge-R740:~$ docker exec -it daf2 /bin/sh
制作镜像时使用了精简版,只装了sh命令,未安装bash。
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的符号链接。
ln -s /bin/bash /bin/sh
hello.sh脚本:
- #!/bin/sh
- source err
- echo "sh hello"
hello2.sh脚本:
- #!/bin/bash
- source err
- echo "bash hello2"
输出结果:
- [root@admin]# bash hello2.sh
- hello2.sh: line 2: err: No such file or directory
- hello2
- [root@admin]# sh hello.sh
- hello.sh: line 2: source: err: file not found
- [root@admin]# bash --posix hello2.sh
- hello2.sh: line 2: source: err: file not found