๊ด€๋ฆฌ ๋ฉ”๋‰ด

<Hello Hosung๐Ÿ˜Ž/>

[Docker] ๋„์ปค๋กœ Jenkins๐Ÿ˜€ ์„œ๋ฒ„ ๋งŒ๋“ค์–ด๋ณด๊ธฐ ๋ณธ๋ฌธ

๐Ÿณ Docker

[Docker] ๋„์ปค๋กœ Jenkins๐Ÿ˜€ ์„œ๋ฒ„ ๋งŒ๋“ค์–ด๋ณด๊ธฐ

์ขŒ์ถฉ์šฐ๋Œ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ผ๊ธฐ๐Ÿง 2024. 11. 20. 17:52

 

 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Docker๋ฅผ ์‚ฌ์šฉํ•ด Jenkins ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ ,

Jenkins ๋‚ด๋ถ€์—์„œ Docker ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•์„ ์ค€๋น„ํ•˜๋Š” ๋‹จ๊ณ„๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


1. Jenkins ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

Jenkins๋ฅผ Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋จผ์ € Jenkins ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ธฐ๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

1.1 Docker ์„ค์น˜ ํ™•์ธ

๋จผ์ €, Docker๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด Docker ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์„ค์น˜ํ•˜์„ธ์š”.

docker --version

 

1.3 Jenkins ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

Jenkins ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ Docker ์†Œ์ผ“ ๊ณต์œ ๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ๋„ Docker ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

docker run -v /var/run/docker.sock:/var/run/docker.sock \
           -v jenkins_home:/var/jenkins_home \
           -p 7070:8080 \
           --name jenkins-container \
           -d jenkins/jenkins:lts

 

  • -v /var/run/docker.sock:/var/run/docker.sock
    ํ˜ธ์ŠคํŠธ์˜ Docker ์†Œ์ผ“์„ ์ปจํ…Œ์ด๋„ˆ์— ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.
  • -v jenkins_home:/var/jenkins_home
    Jenkins ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์†์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณผ๋ฅจ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • -p 7070:8080
    ํ˜ธ์ŠคํŠธ์˜ ํฌํŠธ 7070์„ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌํŠธ 8080์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.
  • --name jenkins-container
    ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ jenkins-container๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’ก ์ฐธ๊ณ :Docker ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ -d ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


 

2. Jenkins ์ดˆ๊ธฐ ์„ค์ •

2.1 Jenkins ์›น ์ธํ„ฐํŽ˜์ด์Šค ์ ‘์†

๋ธŒ๋ผ์šฐ์ €์—์„œ ์•„๋ž˜ URL๋กœ ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค

http://localhost:7070

 

2.2 ์ดˆ๊ธฐ ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ

Jenkins๋ฅผ ์ฒ˜์Œ ์‹คํ–‰ํ•˜๋ฉด ์ดˆ๊ธฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ํ™•์ธํ•˜์„ธ์š”.

docker exec -it jenkins-container cat /var/jenkins_home/secrets/initialAdminPassword

 

2.3 ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜

Jenkins ์›น UI์— ๋กœ๊ทธ์ธํ•œ ํ›„, ๊ถŒ์žฅ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

ํ•„์š”์— ๋”ฐ๋ผ Pipeline, Git, Docker ๊ด€๋ จ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€๋กœ ์„ค์น˜ํ•˜์„ธ์š”.


 

3. Jenkins ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ Docker ๋ช…๋ น์–ด ์‚ฌ์šฉํ•˜๊ธฐ

Jenkins ๋‚ด๋ถ€์—์„œ Docker ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Docker CLI๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ถŒํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

3.1 Jenkins ์ปจํ…Œ์ด๋„ˆ์— Root ๊ถŒํ•œ์œผ๋กœ ์ ‘์†

docker exec -it -u root jenkins-container /bin/bash

 

๐Ÿ’ก ์ฐธ๊ณ : -u root ์˜ต์…˜์œผ๋กœ Root ์‚ฌ์šฉ์ž๋กœ ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.

 

3.2 Docker CLI ์„ค์น˜

์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•˜์„ธ์š”.

# ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ
apt-get update

# ํ•„์ˆ˜ ํŒจํ‚ค์ง€ ์„ค์น˜
apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common

# Docker GPG ํ‚ค ์ถ”๊ฐ€
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -

# Docker ์ €์žฅ์†Œ ์ถ”๊ฐ€
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

# ํŒจํ‚ค์ง€ ๋ชฉ๋ก ์—…๋ฐ์ดํŠธ
apt-get update

# Docker CLI ์„ค์น˜
apt-get install -y docker-ce-cli

 

 

 

3.3 Docker ๊ถŒํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ

๊ถŒํ•œ ๋ฌธ์ œ๋กœ Docker ๋ช…๋ น์–ด๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ์†Œ์ผ“ ๊ถŒํ•œ์„ ์„ค์ •ํ•˜์„ธ์š”.

sudo chmod 666 /var/run/docker.sock

 

4. Jenkins์™€ Docker ์—ฐ๋™ ํ…Œ์ŠคํŠธ

๋ชจ๋“  ์„ค์ •์ด ์™„๋ฃŒ๋˜๋ฉด Jenkins ๋‚ด๋ถ€์—์„œ Docker ๋ช…๋ น์–ด๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

 

4.1 Docker ์ƒํƒœ ํ™•์ธ

์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

docker ps

 

Docker ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก์ด ์ถœ๋ ฅ๋˜๋ฉด ์—ฐ๋™์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


 

5. Jenkins์™€ CI/CD ํ™˜๊ฒฝ ์ค€๋น„

Jenkins์—์„œ Docker๋ฅผ ํ™œ์šฉํ•ด CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•  ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

  1. GitHub์—์„œ ์ฝ”๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ
  2. Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ฐ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
  3. ์ž๋™ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ

 

๋งˆ๋ฌด๋ฆฌ

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Docker ํ™˜๊ฒฝ์—์„œ Jenkins ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ , ๋‚ด๋ถ€์—์„œ Docker ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. Jenkins๋ฅผ ํ™œ์šฉํ•ด CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด, ์ด ๊ณผ์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™ํ™” ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•ด ๋ณด์„ธ์š”