<aside> 📌 아래 install_docker.sh의 도커 설치 스크립트는 라즈베리파이(arm)가 아닌 amd용이다.

</aside>

젠킨스 도커 컨테이너에서 docker를 실행할려고 보니 docker가 없다고 합니다.

docker: not found

그래서 젠킨스 도커 컨테이너 내에서 docker를 설치 및 실행(Docker in Docker)할까 했지만, 권장되는 방식이 아니랍니다.

Docker out of Docker

젠킨스 도커 이미지 내에 docker를 설치하지만, 호스트 서버에 이미 설치되어 있는 docker를 이용하여 docker를 실행하는 방법입니다.

jenkins-docker 이미지 생성

mkdir jenkins-docker
cd jenkins-docker
vi install_docker.sh
------------------------------------
#!/bin/sh

apt-get update

apt-get -y install apt-transport-https \\
     apt-utils \\
     ca-certificates \\
     curl \\
     gnupg2 \\
     zip \\
     unzip \\
     software-properties-common

curl -fsSL <https://download.docker.com/linux/$>(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey

add-apt-repository \\
   "deb [arch=amd64] <https://download.docker.com/linux/$>(. /etc/os-release; echo "$ID") \\
   $(lsb_release -cs) \\
   stable" && \\

apt-get update

apt-get -y install docker-ce
------------------------------------
vi Dockerfile
------------------------------------
FROM jenkins/jenkins:lts

USER root

COPY install_docker.sh /install_docker.sh
RUN chmod +x /install_docker.sh
RUN /install_docker.sh

RUN usermod -aG docker jenkins
USER jenkins
------------------------------------

docker hub 에 이미지를 업로드 합니다. 계정이 없다면 먼저 계정을 생성해 줍니다.

docker build -t skyer9/jenkins-docker:0.0.1 .
docker build -t skyer9/jenkins-docker:latest .
docker login
docker push skyer9/jenkins-docker:0.0.1
docker push skyer9/jenkins-docker:latest

호스트 서버에서 작업

젠킨스 도커 이미지 실행시 아래의 명령으로 호스트 서버의 docker.sock 를 공유하여 시작합니다.

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