반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- CD
- 다이어리
- IOS
- 네트워크
- MySQL
- DBMS
- 소켓
- 스프링부트
- 밥먹는 철학자
- CI
- sql
- 스프링
- Xcode
- javascript
- springboot
- 스프링부트 웹 소켓
- 리눅스
- AI
- 데이터베이스
- 오라클
- swift
- 아이패드다이어리
- 인공지능
- Dining philosopher problem
- JPA
- 42seoul
- libasm
- jenkins
- 프로그래밍언어론
- Spring
Archives
- Today
- Total
Hi yoahn 개발블로그
Jenkins 이미지 안에서 도커 실행 본문
반응형
Jenkins 를 이용하여 CI/CD를 할 때, Docker를 사용하는 상황이라면 Jenkins 가 설치된 인스턴스에 이미 Docker 가 깔려있지만 Jenkins 이미지 안에는 Docker 가 없기 때문에 docker 실행시 오류가 발생한다.
이를 해결하기 위해 Jenkins 이미지 안에 도커를 또 깔아야 할까?
아니다.
호스트 컴퓨터에 깔려있는 도커 데몬과, 젠킨스 컨테이너 내에 존재하는 도커 클라이언트가 통신할 수 있도록 해주면 된다.
1. docker 설치
sudo wget -qO- https://get.docker.com/ | sh
sudo usermod -aG docker ${USER} # docker 실행을 sudo 권한 없이 할 수 있게 해줌
sudo systemctl start docker
sudo systemctl enable docker
logout
2. Jenkins 설치
- Jenkins Docker 이미지 빌드
docker build -t myjenkins 로 이미지 빌드
- Jenkins 컨테이너 실행
docker run -d --name myjenkins -p 8080:8080 --restart=always
-v jenkins-home:/var/jenkins_home
-v /var/run/docker.sock:/var/run/docker.sock
--group-add $(stat -c '%g' /var/run/docker.sock) myjenkins
- -v /var/run/docker.sock:/var/run/docker.sock
- 소켓 연결
- 호스트 소켓과 컨테이너 안의 소켓을 연결 (도커 안에서 도커를 실행)
- 젠킨스 컨테이너에서 호스트의 Docker engine 을 활용하기 위해서
- docker volume: bind-mount 방식
- -v jenkins-home:/var/jenkins_home
- docker volume 방식
3. Docker 이미지로 배포하기
- Jenkinsfile 작성
- stage('여기는 원하는 이름으로 작성') {
여기는 Jenkinsfile 명령 사용
}
- stage('여기는 원하는 이름으로 작성') {
node {
def app
stage('Clone repository') {
git 'https://github.com/AYoungSn/jenkins-test.git'
}
stage('Build image') {
app = docker.build("dudtjs0920/sswu-opensource") // docker ID, docker repo
}
stage('Test image') {
app.inside {
sh 'make test'
}
}
stage('Push image') {
docker.withRegistry('https://registry.hub.docker.com', 'dudtjs0920') {
app.push("${env.BUILD_NUMBER}")
app.push("latest")
}
}
}
- Dockerfile 작성
FROM ubuntu:20.04
RUN apt-get update && apt-get -y install build-essential && mkdir -p /app
COPY . /app/
WORKDIR /app/
CMD make
반응형
'sswu' 카테고리의 다른 글
컴파일러 기말 (0) | 2022.11.22 |
---|---|
컴파일러 중간 (0) | 2022.10.04 |
Dockerfile 레이어 수 (0) | 2022.06.13 |
디자인 패턴 기말 정리 (0) | 2022.05.30 |
오픈소스 소프트웨어 기말 정리 (0) | 2022.05.20 |
Comments