0Pricing
DevOps Bootcamp · 강의

Jenkins로 Docker 이미지 빌드하기

코드가 변경되면 Docker 이미지를 자동으로 빌드하여 레지스트리에 푸시하도록 Jenkins 작업을 구성합니다.

Jenkins로 Docker 이미지 빌드하기은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

Docker 빌드 자동화

Docker 이미지를 수동으로 빌드하면 느리고 일관성이 떨어지며 오류가 발생하기 쉽습니다. 팀 환경이나 코드 변경이 잦은 경우에는 특히 그렇습니다.

신뢰할 수 있고 효율적인 소프트웨어 제공을 위해서는 자동화가 핵심입니다. 이번 강의에서는 Jenkins를 Docker와 통합하여 이미지 생성과 푸시를 자동화하는 방법을 배워 보겠습니다.

Jenkins로 Docker 이미지 빌드하기 — 일러스트레이션 1

Jenkins와 Docker 사전 요구 사항

Jenkins가 Docker 이미지를 빌드하려면 Docker 데몬과 상호 작용해야 합니다. 즉, Jenkins 작업이 실행될 컴퓨터나 에이전트에 Docker 클라이언트가 설치되어 있어야 합니다.

다음 항목도 필요합니다:

  • 실행 중인 Jenkins 서버(강의 1에서 설정)
  • Docker 레지스트리에 대한 액세스(예: Docker Hub)
  • 샘플 애플리케이션과 해당 Dockerfile

Jenkins 호스트에 Docker 설치

Jenkins에서 Docker 명령을 실행할 수 있도록 Jenkins 서버 또는 에이전트에 Docker가 설치되고 구성되어 있는지 확인하십시오. Jenkins 사용자가 Docker 데몬과 상호 작용하려면 권한이 필요한 경우가 많습니다.

Linux 시스템에서는 다음과 같이 설정할 수 있습니다.

sudo apt-get update
sudo apt-get install -y docker.io
sudo usermod -aG docker jenkins
sudo systemctl restart docker
sudo systemctl restart jenkins

레지스트리 자격 증명 보호

Docker 레지스트리에 이미지를 푸시하려면 Jenkins에 자격 증명이 필요합니다. 자격 증명을 Jenkinsfile이나 작업 구성에 직접 저장하지 말고 안전하게 보관하는 것이 중요합니다.

Jenkins에 기본 제공되는 Credentials 기능을 사용하면 편리합니다.

  • Manage Jenkins > Manage Credentials로 이동합니다.
  • Docker 레지스트리용 새 Username with password 자격 증명을 추가합니다.
  • 나중에 참조할 수 있도록 설명적인 ID(예: dockerhub-credentials)를 지정합니다.

Flask 애플리케이션 예제

아주 간단한 Python Flask 애플리케이션을 사용해 보겠습니다. 이 애플리케이션을 app.py라는 파일에 작성합니다. 기본적인 'Hello' 메시지를 제공합니다.

Python 종속 항목을 지정하려면 requirements.txt 파일도 필요합니다.

# app.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello from CoddyKit!'

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)

# requirements.txt
Flask==2.0.2

Dockerfile 만들기

다음으로 Dockerfile을 사용하여 Docker 이미지를 정의하겠습니다. 이 파일은 Docker에 애플리케이션 이미지를 빌드하는 방법을 지시합니다.

이 Dockerfile을 app.py 및 requirements.txt와 같은 디렉터리에 배치하십시오.

# Dockerfile
FROM python:3.9-slim-buster
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
EXPOSE 5000
CMD ["python", "app.py"]

Jenkins 작업: 빌드 단계

이제 Jenkins Freestyle 작업을 구성해 보겠습니다. Build Steps 섹션에서 Execute shell 단계를 추가하십시오. 이 명령은 Docker 이미지를 빌드합니다.

yourusername을 Docker Hub 사용자 이름 또는 레지스트리 경로로 바꾸는 것을 잊지 마십시오.

# In Jenkins 'Execute shell' build step:
docker build -t yourusername/coddykit-app:latest .

Jenkins 작업: 로그인 및 푸시 단계

이미지를 빌드한 후에는 Docker 레지스트리에 푸시해야 합니다. 일반적으로 이 작업을 수행하려면 로그인해야 합니다. 앞에서 저장한 자격 증명을 사용하겠습니다.

새 Execute shell 단계를 추가하십시오. 올바르게 구성하면 Jenkins가 자격 증명을 환경 변수(예: DOCKER_USER, DOCKER_PASS)로 주입합니다.

# In Jenkins 'Execute shell' build step:
echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
docker push yourusername/coddykit-app:latest

빌드 트리거 자동화

CI/CD의 강점은 자동화에서 나옵니다. Jenkins는 다양한 이벤트를 기준으로 이러한 빌드 및 푸시 작업을 자동으로 트리거할 수 있습니다.

  • SCM Polling: Jenkins가 Git 저장소에서 새 커밋을 주기적으로 확인합니다.
  • Webhooks: Git 제공업체(GitHub, GitLab, Bitbucket)가 코드가 푸시될 때마다 Jenkins에 알림을 보냅니다.
  • Upstream Projects: 다른 Jenkins 작업이 성공적으로 완료되면 트리거됩니다.

Jenkins 작업 테스트

빌드 단계와 트리거를 구성한 후 Jenkins 작업을 저장하십시오. 수동으로 빌드를 트리거하여 테스트할 수 있습니다. Docker 이미지가 성공적으로 빌드되고 푸시되는지 콘솔 출력을 확인하십시오.

실행이 성공하면 이제 코드가 변경될 때마다 CI 파이프라인이 새 Docker 이미지를 자동으로 생성하고 저장할 수 있다는 뜻입니다!

빠른 확인

Jenkins 작업을 설정하여 Docker 이미지를 빌드하고 푸시했습니다. Git 저장소에 새로운 코드 변경 사항이 있습니다.

복습: 빌드 및 푸시

잘하셨습니다! 이번 레슨에서는 다음 방법을 배웠습니다.

  • Docker와 상호 작용하도록 Jenkins 환경을 준비합니다.
  • Jenkins에서 Docker 레지스트리 자격 증명을 안전하게 관리합니다.
  • Dockerfile을 사용하여 Docker 이미지를 빌드하도록 Jenkins 작업을 구성합니다.
  • 새로 빌드한 이미지를 Docker 레지스트리에 푸시합니다.
  • 자동화된 빌드를 트리거하는 다양한 방법을 이해합니다.

이러한 단계를 자동화하는 것은 지속적 통합의 핵심이며 지속적 제공을 위한 기반이 됩니다!

자주 묻는 질문

“Jenkins로 Docker 이미지 빌드하기” 강의는 무료인가요?

네 — “Jenkins로 Docker 이미지 빌드하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

“Jenkins로 Docker 이미지 빌드하기”에서 뭘 배우나요?

코드가 변경되면 Docker 이미지를 자동으로 빌드하여 레지스트리에 푸시하도록 Jenkins 작업을 구성합니다. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“Jenkins로 Docker 이미지 빌드하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Jenkins 소개
  2. Jenkins로 Docker 이미지 빌드하기
  3. Jenkins를 활용한 자동 배포
  4. Jenkinsfile을 활용한 코드형 Jenkins Pipeline
← DevOps Bootcamp(으)로 돌아가기