- gitlab
- Jenkins
- Docker, dockerhub
$ docker run --privileged --name dind1 -d docker:1.8-dind
# mkdir -p /docker/jenkins # chmod 666 /docker/jenkins
# docker run -itd --name jenkins -p 8080:8080 -p 50000:50000 -v /docker/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -e TZ=Asia/Seoul -u rootjenkins/jenkins:latest
-v /docker/jenkins:/var/jenkins_home local volume의 /docker/jenkins 디렉토리와 container volume의 /var/jenkins_home 디렉토리 매핑 -v /var/run/docker.sock:/var/run/docker.sock 제일 중요한 옵션 docker in docker를 구현하기 위해 사용하는 옵션 -u root Docker 사용자를 root로 설정 -p 8080:8080 -p 50000:50000 local port와 container port 연결 8080은 Jenkins 기본 port 50000dms Jenkins slave port -e TZ=Asia/Seoul jenkins 내의 timezone 설정
[root@jenkins devops-pipeline]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d8cbbb69e267 jenkins/jenkins:latest "/sbin/tini -- /usr/…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkins
0.0.0.0/0은 모든 IP 대역에 대한 허용입니다.
현재는 기능테스트를 위해서 모든 대역으로 잡아놨지만 후에 특정 인스턴스의 IP로만 허용 할 예정입니다이제 브라우저로 젠킨스에 접속 해봅시다
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
gitlab
을 사용해보겠습니다.
$ docker exec -it jenkins bash
$ curl -fsSL get.docker.com -o get-docker.sh
$ sh get-docker.sh
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 094c32442200 nasa1415/devops:0.1 "/sbin/tini -- /usr/?? About an hour ago Up About an hour 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkins
FROM ubuntu:18.04 RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime RUN apt upgrade -y RUN apt-get update -y RUN apt-get install nginx -y RUN echo "daemon off;" >> /etc/nginx/nginx.conf CMD ["nginx"]
root@nasa1515:/gitlab/devops-pipeline# ls -alrt 합계 24 drwxr-xr-x 3 student student 4096 9월 22 15:55 .. -rw-r--r-- 1 root root 45 9월 22 16:00 README.md -rwxrwxrwx 1 root root 208 9월 24 17:56 Dockerfile -rwxrwxrwx 1 root root 355 9월 24 18:10 Jenkinsfile-nasa drwxr-xr-x 8 root root 4096 9월 24 18:11 .git drwxr-xr-x 3 root root 4096 9월 25 11:50 .
node { stage('Clone repository') { checkout scm } stage('Build image') { app = docker.build("nasa1415/devops") } stage('Push image') { docker.withRegistry('https://registry.hub.docker.com', 'nasa1415') { app.push("${env.BUILD_NUMBER}") app.push("latest") } } }