Jenkins Docker: not found 이슈 해결하기

젠킨스에 도커 소켓을 연결시켜주었음에도 불구하고 도커 명령어를 실행할 수 없기에 발생하는 오류를 해결하는 과정을 글로 남겨 보았습니다.

Jenkins Docker: not found 이슈 해결하기

문제 상황

현재 내 서버는 proxmox VM 위에서 돌아가고 있으며,

VM > Docker > Jenkins 순으로 올라가있다 ( 관리는 portainer로 해주고 있다. )

이렇듯 도커 안에서 컨테이너로써 작동하고 있는 jenkins가 VM 위에 올라간 도커에다가 프로그램을 올릴수 있게 하기 위해서는,

-v /var/run/docker.sock:/var/run/docker.sock

옵션을 jenkins 컨테이너 실행시에 걸어서 호스트 환경에서의 도커 소켓에 jenkins가 접근할 수 있게 해주어야 한다.

이러한 조치를 마친 후에도 여전히 jenkins 상에서 빌드를 올렸을때

docker: not found 오류가 발생하는것을 발견할수 있었고, 이를 해결해보고자 한다.

접근

Docker: not found in Jenkins pipeline
Hi there, I spent 3 days searching and trying many possible ways to fix this issue and I couldn’t What I’m trying to do is simply run docker commands in Jenkins pipeline like docker ps, but I’m getting this error [app] Running shell script + docker ps /var/jenkins_home/workspace/app@tmp/durable-e…

privileged mode 설정

검색해보자 바로 나왔던 첫번째 글에서, privileged mode로 실행시켜주라는 코멘트를 보았으나,

내 환경은 이미 privileged mode로 실행되고 있었고, 따라서 이 해결방법은 나한테 적용되는 것은 아니었다.

 -v $(which docker):/usr/bin/docker

옵션을 통해 docker가 설치된 폴더 째로 넘겨줄 수 있다고 하던데, 이 경우를 지난번에 시도했다가 충돌이 발생해 정상작동하지 않음을 이미 확인한 바 있었고, 즉 위에서의 글은 크게 도움이 되지는 않았다.

터미널에 붙어보기

jenkins 내부의 터미널에 붙어서 체크해봤다.

docker exec -it --user root jenkins /bin/bash
docker

명령어가 제대로 실행되지 않는 것을 보아, jenkins의 문제라기 보다는 jenkins가 실행중인 도커 컨테이너에서의 문제라고 판단, 컨테이너 상에서 docker를 재설치하는것을 중점으로 찾아보았다.

도커 재설치

cat /etc/issue 명령어를 통해 jenkins가 실행되는 컨테이너가 debian 기반이라는것을 확인했고,

같은 데비안 분류에 속하는 우분투에 docker engine을 설치하는 공식 문서

Install Docker Engine on Ubuntu
Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.

를 참조하여

# 문제가 되었던 도커를 제거
apt remove docker docker-engine docker.io containerd runc

# 의존성 설치
apt update
apt install ca-certificates curl gnupg lsb-release

# 레포지토리
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 레포지토리 추가
echo "deb [arch="$(dpkg --print-architecture)" \
signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null

# 도커 설치하기
apt update
apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

다음과 같은 명령어를 실행, 도커를 재설치해주었다.

이후

docker

명령어로 제대로 설치되었는지 확인하였고,

정상 출력을 확인한 후 빌드를 진행,

문제를 해결할 수 있었다.