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

简介: 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


相关文章
|
1月前
|
安全 Docker 容器
Docker中运行容器时Operation not permitted报错问题解决
【10月更文挑战第2天】Docker中运行容器时Operation not permitted报错问题解决
302 3
|
1月前
|
JavaScript 前端开发 Docker
拿下奇怪的前端报错(二):nvm不可用报错`GLIBC_2.27‘‘GLIBCXX_3.4.20‘not Found?+ 使用docker构建多个前端项目实践
本文介绍了在多版本Node.js环境中使用nvm进行版本管理和遇到的问题,以及通过Docker化构建流程来解决兼容性问题的方法。文中详细描述了构建Docker镜像、启动临时容器复制构建产物的具体步骤,有效解决了不同项目对Node.js版本的不同需求。
|
1月前
|
网络虚拟化 Docker 容器
docker Desktop报错 error pulling image configuration 处理
docker Desktop报错 error pulling image configuration 处理
34 0
|
7天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
28 2
|
网络协议 关系型数据库 PostgreSQL
|
4天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
13天前
|
关系型数据库 MySQL API
|
9天前
|
运维 持续交付 Docker
深入理解Docker容器化技术
深入理解Docker容器化技术
|
5天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
7天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?