SW/DevOps

DevOps : 애플리케이션을 도커 이미지로 구축하는 방법

얇은생각 2019. 12. 3. 07:30
반응형

스프링 부트 애플리케이션을 직접 만들 것은 아니고 스프링에게 제공하는 기본 예제 프로젝트를 활용할 것입니다. 먼저 STS를 실행한 상태에서 시작하겠습니다.

파일에서 New를 선택해서 Import Spring Getting Started Contents를 선택합니다. Docker로 검색해서 Spring-boot-Docker 샘플을 선택합니다. 아래 코드셋의 이니셜을 체크 해제하고 Finish 버튼을 클릭합니다. Gs-spring-boot-Docker 프로젝트가 생성되면서 빌드 되고 있습니다. 그럼 소스코드를 살펴보겠습니다. 

간단한 스프링 부트 프로젝트로서 하나의 파일로 구성되어 있습니다. 웹브라우저에서 기본 주소로 서비스에 접속하면 Hello Docker World라는 메시지를 출력하는 서비스입니다. 서비스를 실행해 보겠습니다. 부트 대시보드에서 해당 서비스를 스타트를 시키면 서비스가 가동됩니다.서비스가 가동된 후 서비스에 접속해 보면 Hello Docker World라는 메시지가 표시되는 것을 볼 수 있습니다. 

도커파일을 확인해 보겠습니다. 프로젝트에는 이미 도커 파일이 작성되어 있습니다. 도커파일을 찾아서 작성된 내용을 보겠습니다. openJDK를 베이스 이미지로 하고 tmp를 볼륨으로 추가합니다. 그리고 라이브러리와 클래스 파일을 복사하고 엔트리포인트로 자바 애플리케이션을 실행시키는 명령으로 간단히 구성되어 있습니다. 그럼 이 도커파일을 가지고 도커 이미지를 생성해 보도록 하겠습니다. 윈도우즈 파워쉘 프로그램을 먼저 실행한 상태에서 시작하겠습니다. 

 

 

 

도커파일을 이미지로 빌드 해보겠습니다. 도커 이미지 빌드가 성공하였습니다. 도커 이미지 목록에서 확인하게 되면, 목록에서 표시되는 것을 알 수 있습니다.

 

 

 

그럼 이제 애플리케이션을 컨테이너로 실행해 보겠습니다. docker run-p 8080:8080 gs-spring-boot-Docker -d 명령을 실행합니다. -p 옵션은 호스트에서 8080으로 컨테이너에 접속 가능하도록 해줍니다. 스프링 부트가 기동이 되고, 크롬 브라우저에서 localhost:8080/으로 접속하면 Hello Docker World 메시지가 표시됩니다. 개발과 운영 중에서 생성한 애플리케이션의 Docker 이미지 공유가 필수적입니다.

 

 

 

애플리케이션 도커 이미지 공유

공식 도커 레지스트리인 Docker Hub에 이미지를 등록하여 활용할 수 있고, 혹은 프라이빗 네트워크에서 직접 도커 레지스트리를 구축하여 활용할 수 있습니다.

 

 

 

먼저 도커 레지스트리를 직접 구축하여 이미지를 업로드 해보겠습니다. 도커를 사용해서 도커 레지스트리 컨테이너를 구동시킬 건데 레지스트리는 5000번 포트를 사용합니다. docker run -d -p 5000:5000 registry:2.0을 실행합니다. 도커 레지스트리가 성공적으로 구축되었습니다. 구축된 도커 레지스트리에 이미지를 업로드해 보겠습니다.

 

 

 


프라이빗 도커 레지스티리에 업로드 하려면 이미지 태그를 붙여야 하는데 규칙은 화면과 같습니다. 레지스트리주소와 포트번호 슬래쉬 이미지명을 사용합니다. 직접 실행해 보겠습니다. 먼저 레지스트리가 정상적으로 작동중인지 확인합니다. 도커 이미지를 확인해 보면 아까 생성해 놓은 gs-spring-boot-Docker 이미지가 있습니다.

이것을 레지스트리에 Push하기 위해서 정해진 규칙대로 태그를 붙입니다. 이미지를 확인해 보면 태그대로 이미지가 생성된 것을 알 수 있습니다. 이미지 아이디를 확인 해보면 베이스가 되는 이미지와 값이 동일한 것을 알 수 있습니다. 바로 레지스트리에 Push 해보겠습니다. 로컬 레지스트리에 성공적으로 이미지가 업로드되었습니다.

 

 

 

그럼 이번에는 공식 도커 레지스트리인 도커 허브에 업로드를 해 보겠습니다. 도커 허브에 업로드하기 위해서는 도커 허브에 로그인을 해야 합니다. 그러기 위해서는 도커 허브에 가입해서 아이디를 받아야만 합니다. 도커 허브에 이미지를 업로드 할 때도 정해진 규칙대로 태그를 붙입니다. 도커허브의 아이디 슬래쉬 이미지명입니다. 도커 허브에 로그인부터 해보겠습니다. 유저네임을 입력하고 패스워드를 넣어서 로그인합니다.

 

 

 

그리고 아까 사용했던 원본 이미지를 가지고 태그를 만들어서 도커 허브에 올리기 위한 이미지를 생성합니다. 이미지 목록을 확인 해보면 저의 도커 유저네임/gs-spring-boot-Docker라는 이미지가 보입니다. 이것을 Push하면 도커 허브에 성공적으로 업로드됩니다. 

이렇게 공유를 위해서 업로드한 이미지는 언제든지 다운로드 받아 활용할 수 있습니다. 제대로 다운로드되어 작동이 되는지 로컬에 있는 이미지를 삭제한 다음에 레지스트리로부터 이미지를 다운로드 받아 보겠습니다. 이미지를 확인해보면 기존에 만들었던 이미지들이 표시가 됩니다.

기존의 이미지들을 다 삭제하고 로컬에는 이미지를 없도록 만들겠습니다. 이미지 목록에는 아까 사용했던 이미지들은 없어졌습니다. 그럼 로컬 레지스트리에서 이미지를 풀로 다운로드 받아보겠습니다. 이미지 목록을 확인해보면 다운로드받은 이미지를 확인할 수 있습니다.

다음은 도커허브에서도 한번 다운로드 받아보겠습니다. 도커 풀 명령을 써서 실행해보면, 이미지가 다운로드받아졌는지 목록을 확인해보겠습니다. 목록에서도 도커허브에서 받은 이미지를 확인할 수 있습니다.

반응형