간만에 도커를 실습하는 와중에 아래와 같은 에러를 마주했다.
OCI runtime exec failed: exec failed: unable to start container process: exec: "ping": executable file not found in $PATH: unknown
내가 하고자 하는 명령어는 아래와 같았다.
docker exec mysql ping findby
docker exec findby ping mysql
즉 findby라는 컨테이너와 mysql이라는 컨테이너 사이에서 서로에게 핑을 보냄으로써 정상적으로 컨테이너가 살아있는 지 확인하기 위함이었다. 물론 당연히 떴으니 살아있겠지만 그냥 확인차 ping은 잘 날라가는 지 보고 싶었다.
근데 왜 위 오류가 발생했을까? 위 오류를 잘 살펴보자.
"ping": executable file not found in $PATH: unknown
핑을 찾을 수 없다고 한다.
리눅스에서는 기본적으로 해당 명령어를 실행시킬 때 명령어가 실제 존재하는지 PATH를 뒤져가면서 살핀다. 그래서 PATH에 비슷한 이름을 가진 악성 파일을 심어다놓고 공격하는 방법이 있는 것도 그래서다.
근데 Ping이 path에 없다고? 즉 ping이 깔려있지 않다는 소리다.
그러면 어떻게 해야할까?
우리는 각 컨테이너에서 ping명령어를 실행해서 ping을 날리고 싶은 거니 각각 컨테이너의 쉘을 띄워서 ping 을 설치해주면 된다.
아래와 같이 진행한다.
docker exec -it findby /bin/bash
root@:/# apt-get update
root@:/# apt-get install inetutils-ping
root@:/# exit
docker exec findby ping mysql
핑 결과
64 bytes from blabla: icmp_seq=0 ttl=64 time=0.106 ms
64 bytes from blabla: icmp_seq=1 ttl=64 time=0.080 ms
64 bytes from blabla: icmp_seq=2 ttl=64 time=0.100 ms
'인프라 > Docker' 카테고리의 다른 글
[Docker] 협업 방식 정리(2) 가상화 + docker + dockerfile + docker compose + docker network + dockerhub (0) | 2023.02.16 |
---|---|
[Docker] Docker 사용법 총정리 (0) | 2022.11.16 |
[Docker] Docker 기초 공부자료 (0) | 2022.07.18 |