Docker

[Docker] 8. 도커(Docker) 이용하여 Jenkins(설치)

Yoon 2021. 12. 18. 20:02

도커 강의 유튜브 영상을 보다가, 연습 문제를 풀어보는 강의가 있어서 풀어봤다.

문제는 

 

1. 기존에 설치된 모든 컨테이너, 이미지를 모두 정지 및 삭제

2. 도커 명령어로 Jenkins 검색

3. 도커 명령어로 찾은 Jenkins 설치

4. Jenkins 포트로 접속하여 웹 서비스 열기

5. Jenkins 초기 비밀번호 찾아서 로그인하기

 

이렇게 있었는데, 지금까지 강의를 보면서 도커에 대해 이해도가 어느 정도 높아졌고,

명령어에도 익숙해져서 문제를 쉽게 풀었다.


문제 풀이

1. 기존에 설치된 모든 컨테이너, 이미지를 모두 정지 및 삭제

 

도커에 생성되어 있는 컨테이너를 모두 조회하는 명령어를 통해 컨테이너 존재 여부를 확인 후

 

해당 컨테이너 ID를 통해 컨테이너를 삭제하여 도커에 존재하는 컨테이너를 삭제하였다.

해당 컨테이너가 정지되어있는 상태였기 때문에 그냥 삭제하였다.

 

사실 1번은 그 당시에 문제 풀기 전에 컨테이너, 이미지는 모두 삭제한 상태였기 때문에

이 글 쓰면서 젠킨스를 다시 설치 후 삭제한 것이다.

그 후 이미지의 존재 여부를 확인하고 rmi 명령어를 통해 이미지들을 모두 삭제하였다.

이렇게 1번은 해결된 것이다.

#사용된 명령어
docker ps -a 
docker stop {container}
docker rm {container}
docker images
docker rmi {image}

문제 풀이

2. 도커 명령어로 Jenkins 검색

 

docker repository에서 도커 이미지를 찾기 위해선 docker search {programName} 명령어를 사용하면 된다.

jenkins를 설치할 것이기 때문에 jenkins를 검색하면 된다.

명령어를 실행하면 해당 관련 이미지 리스트가 뜨는데, 첫번째에 뜨는 jenkins를 설치하면 된다.

#사용된 명령어
docker search

문제 풀이

3. 도커 명령어로 찾은 Jenkins 설치

docker pull이미지를 통해 jenkins라는 이름으로 설치를 하려고 했는데, not found 에러가 뜨는 것이다.

다시 확인해보니 jenkins 이미지 설명 영역에 "jenkins/jenkins:lts"를 사용하라는 문구가 있길래
해당 이미지 이름을 사용하여 이미지 다운로드하였다.

 

#사용된 명령어
docker pull {imageName}

문제 풀이

4. Jenkins 포트로 접속하여 웹 서비스 열기

jenkins 이미지를 설치했지만 jenkins가 어떤 http 포트를 사용하는지 몰랐다.

그래서 docker history 명령어를 통해 이미지의 정보를 가져왔고 http 포트 번호를 알아냈다.

docker run 명령어를 통해 설치했던 jenkins 이미지를 컨테이너로 생성하여 실행하였다.

80 포트로 접근하여 8080 포트의 서비스를 사용할 수 있다.

컨테이너 실행 후 웹 접속 화면

#사용된 명령어
docker history {imageName}
docker run -d -p {hostPort}:{servicePort} --name {customName} {imageName}
docker ps

문제 풀이

5. Jenkins 초기 비밀번호 찾아서 로그인하기

 

jenkins 컨테이너를 실행 후 브라우저로 jenkins 서비스에 접근해보면,

"Jenkins가 관리자에 의해 안전하게 설정되었는지 확인하기 위해 로그와 서버의 이 파일에 암호가 기록되어 있습니다."

라는 문구가 보인다. 그 밑엔 "/var/jenkins_home/secrets/initialAdminPassword"라는 경로도 적혀 있는데, 초기 비밀번호가 저장되어 있는 경로를 보여주는 것 같았다.

로그에 기록되어 있다길래 docker logs 명령어를 통해 컨테이너 실행 로그를 조회해봤다.

확인해 보니 초기 비밀번호로 보이는 암호화된 문자열 값이 있길래 이 값으로 로그인을 해봤더니 정상 로그인이 됐다.

이 값이 초기 비밀번호였던 것이다.

 

이 외에도 서버 내 파일 안에 기록되어 있다고도 해서 

docker exec -it 명령어를 통해 jenkins 컨테이너 내부로 접근하여 해당 경로에 파일을 열어 보았더니 초기 비밀번호를 확인할 수 있었다.

#사용된 명령어
docker logs jk
docker exec -it {containerName} bash