본문 바로가기
Programming

[Docker] OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown 해결방법

by 개발자 염상진 2022. 7. 28.

에러 발생

도커(Docker)에서 Image를 가져와 컨테이너를 실행했습니다. HTTP 기반 이미지를 가져와서 서버에 특정 파일을 올리는 작업을 하던 중 뭔가 작동이 이상한 듯 해서 컨테이너 내부에 접속을 시도합니다.

$ sudo docker exec -it server bash
 

 

 

 

server 컨테이너에 접속하려고 하니 에러가 발생합니다.

OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown

 

에러 이유

에러가 발생하는 이유는 "bash" 실행파일을 찾지 못했기 때문입니다. 만약 사용하고자 하는 이미지가 Alpine 리눅스를 기반으로 하고 있는 경우 bash를 지원하지 않을 수 있습니다. 즉 이미지가 어떤 Shell을 사용하고 있는지에 따라서 옵션으로 던져줘야 하는 Shell이 다릅니다.

 

bash dash 차이

Shell은 유닉스 계열의 OS에서 커널(kernel)과 유저 사이에서 인터페이스 역할을 담당합니다. 파일 시스템을 관리하고 명령어를 해석해줍니다. shell에는 여러 종류가 존재합니다. 현재 사용중인 OS(유닉스 계열)에서 지원 가능한 shell은 다음과 같이 확인할 수 있습니다.

$ sudo cat /etc/shells

 

제가 사용하고 있는 PC의 경우 sh, bash, zsh, rbash를 지원하고 있습니다. 

/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/bin/zsh
/usr/bin/zsh

 

sh는 Dash를 의미하고 Unix 계열 OS의 표준 쉘로 사용되고 있습니다. 우분투 리눅스 OS의 경우 6.0 버전 부터 적용되었고, 가볍고 빠르다는 장점을 가지고 있습니다. 하지만 사용자와 상호작용하는 기능은 대부분 빠졌기 때문에 bash로 작성된 스크립트 파일이 작동하지 않을 수 있습니다. 

sh는 dash의 약자입니다.

$ file -h /bin/sh
/bin/sh: symbolic link to dash

 

Bash는 Bourne Again Shell로 sh의 상위 개념입니다. 리눅스 운영체제의 기본 Shell로 적용되어 있고, 많은 기능을 지원하기 때문에 속도가 느리다는 단점을 가지고 있습니다. 즉 sh의 상위 개념이 Bash 입니다. 런칭 초반만 해도 POSIX(Portable Operating System Inerface) 표준을 준수했지만 추가 기능이 붙으면서 표준을 준수하고 있지는 않습니다.

 

 

 

 

해결 방법

bash를 지원하지 않는 이미지의 경우 sh(dash)를 사용해 컨테이너에 접속할 수 있습니다. 이미지가 어떤 Shell을 기반으로 하고 있냐에 따라서 컨테이너 접속에 사용해야 되는 Shell도 변경해줘야 합니다. 

$ sudo docker exec -it server sh

 

 

 

 

[Docker] 도커(Docker) 이미지 만들기 2가지 방법

도커(Docker) 이미지? Docker Hub에서 필요한 이미지를 가져와 개발 환경을 구성할 수 있습니다. 하지만 해당 이미지에 원하는 모든 기능이 구현되어 있지 않은 경우에는 따로 이미지를 만들어서 사

about-tech.tistory.com

 

 

[Docker] 도커(Docker) 사용법

도커(Docker)란? 도커(Docker)는 리눅스 컨테이너를 기반으로 소프트웨어의 격리성을 제공하고 배포를 유연하게 해주는 오픈소스 툴입니다. 도커를 사용하면 실행환경을 일치시킬 수 있고, 네트워

about-tech.tistory.com

 

 

[Hardware] L1, L2, L3 캐시 메모리(Cache Memory)란?

단순한 컴퓨터 컴퓨터란 극단적으로 설명하면 단순한 OP 명령을 인출(Fetch), 해석(Decode), 실행(Execute) 하는 전자 계산기 입니다. 단순히 명령어를 저장공간에서 가져와서 몇개 안되는 명령문을 실

about-tech.tistory.com

 

댓글