Infra

[Infra] Jenkins ์ปจํ…Œ์ด๋„ˆ ์•ˆ Docker ์„ค์น˜ํ•˜๊ธฐ(Docker In Docker)

giraffe_ 2023. 5. 2. 01:59

๐Ÿ’ป ๋ฌธ์ œ


Jenkins๋ฅผ Docker๋กœ ์„ค์น˜๋ฅผ ํ•ด์„œ ๋‚ด๋ถ€์—์„œ Docker ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ  ์‹ถ์—ˆ๋‹ค. (Docker In Docker)

ํ•˜์ง€๋งŒ Cannot connect to the Docker daemon ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

 

 

 

์ฒ˜์Œ์— ์ด๋ ‡๊ฒŒ Jenkins๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค๊ฐ€ ๋ฌด์ˆ˜ํ•œ ์‚ฝ์งˆ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

sudo docker run -d --name jenkins -p 8080:8080 jenkins/jenkins:jdk11

 

์ •๋ฆฌํ•˜์ž๋ฉด ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค.

1. Jenkins๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ, ๋‚ด๋ถ€์— ๋„์ปค๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์•„์„œ Docker ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.

2. ๊ทธ๋ž˜์„œ Jenkins ์•ˆ์— Docker๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ–ˆ๋”๋‹ˆ root๋กœ ์ ‘์†ํ•˜๋ผ๊ณ  ํ•œ๋‹ค.

3. ๊ทธ๋ž˜์„œ root๋กœ ์ ‘์†ํ•ด์„œ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ–ˆ๋”๋‹ˆ cli๋กœ ์„ค์น˜๊ฐ€ ์•ˆ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

 

 

 

 

๐Ÿ”Ž ์›์ธ


1) ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋„์ปค๋กœ ์‹คํ–‰์‹œํ‚ค๋ ค๋ฉด, ๋„์ปค ์†Œ์ผ“์œผ๋กœ ์—ฐ๊ฒฐํ•ด์•ผ ํ•œ๋‹ค.

 

 

* ๋„์ปค๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋‘˜์€ ์†Œ์ผ“์„ ํ†ตํ•ด ํ†ต์‹ ์„ ํ•œ๋‹ค.

๋„์ปค ์†Œ์ผ“์€ ๋„์ปค ํด๋ผ์ด์–ธ๋“œ์™€ ๋„์ปค ์„œ๋ฒ„(๋ฐ๋ชฌ) ์‚ฌ์ด์—์„œ ๋ช…๋ น์–ด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์ฆ‰, ๋„์ปค ๋ช…๋ น์–ด๋ฅผ ์จ์„œ Jenkins๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋„์ปค ์†Œ์ผ“์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

์ถœ์ฒ˜ : https://www.tiuweehan.com/blog/2020-09-10-docker-in-jenkins-in-docker/

 

 

 

 

2) Jenkins์˜ ๊ถŒํ•œ์ด root๊ฐ€ ์•„๋‹ˆ๋ผ์„œ Docker๋ฅผ ์„ค์น˜๋ฅผ ํ•  ์ˆ˜ ์—†๋‹ค.

 

 

 

 

 

 

 

 

๐Ÿ’ก ํ•ด๊ฒฐ


์ถœ์ฒ˜ : https://www.tiuweehan.com/blog/2020-09-10-docker-in-jenkins-in-docker/

 

 

 

Jenkins๋ฅผ ์„ค์น˜ํ•  ๋•Œ, Docker Socket๋„ ๊ฐ™์ด ์„ค์น˜ํ•ด์ค€๋‹ค!

 

 

 

 

 

1. ๊ธฐ์กด์˜ ์ด๋ฏธ์ง€๋ฅผ ์ง€์šฐ๊ณ , ๋‹ค์‹œ Jenkins๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

 

1) ๋„์ปค์˜ ์†Œ์ผ“์„ Jenkins ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธ๋ฅผ ํ•œ๋‹ค. (๋„์ปค ๋ฐ๋ชฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.)

2) root ์˜ต์…˜์„ ์ค˜์„œ ์„ค์น˜๋ฅผ ํ•œ๋‹ค.

 

sudo mkdir /home/opendocs/jenkins
sudo docker run \
--name jenkins \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v /home/opendocs/jenkins:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-u root \
jenkins/jenkins:lts

 

 

 

2.  Jenkins ์•ˆ์— Docker๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ Jenkins ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†ํ•œ๋‹ค.

docker exec -it jenkins /bin/bash

 

 

 

 

3. Jenkins ์•ˆ์— Docker๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

## - Old Version Remove
apt-get remove docker docker-engine docker.io containerd runc
## - Setup Repo
apt-get update
apt-get 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/debian> \\
  $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
## - Install Docker Engine
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

 

 

 

 

 

 

 

 

 

 

 

 

 

์˜ค๋Š˜ ํ•˜๋ฃจ ์ด๊ฒƒ ๋•Œ๋ฌธ์— ๋ฌด์ˆ˜ํ•œ ์‚ฝ์งˆ์„ ํ•ด์„œ ์‹œ๊ฐ„์„ ๋‚ ๋ ธ๋‹ค.

๊ทธ๋ž˜๋„ ๋•๋ถ„์— ํ™•์‹คํžˆ ์ ์  ๋„์ปค ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ , ๋„์ปค ๋ช…๋ น์–ด๋ž‘ ์นœ์ˆ™ํ•ด์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค๐Ÿ˜ฅ

 

 

 

 

 

๐Ÿ“– ์ฐธ๊ณ