도커 컨테이너 생성 예제
이 게시글에서는 스프링부트 프로젝트를 도커 이미지로 만들고 도커허브에 푸시해보겠습니다.
도커 설치
설치하기 전 가상화 세팅
도커의 설치를 위해서는 반드시 Hyper-v를 지원하는 OS가 필요하다.
Hyper-v 활성화 하는 방법
- 윈도우 버튼 + s 클릭 후 window 기능 켜기/끄기 클릭
- 만약 아래에서 Hyper-v가 안뜬다면 윈도우 Home 버전일 것이다.
- Home 버전에서 Hyper-v를 활성화 하기 위해서는 아래 게시글을 참고하면 된다.
- https://forbes.tistory.com/542
- 위 이미지에서 Hyper-v 에 체크가 안되어 있을 경우 체크하고 확인을 누르면 자동으로 Hyper-v 가 활성화되고, 재부팅 하고 도커를 설치하러 다음 단계로 이동하면 된다.
- https://docs.docker.com/desktop/install/windows-install/ 에서 exe 다운로드 후 설치
- 윈도우 버튼 + s 클릭 후 window 기능 켜기/끄기 클릭
Gradlew
- Gradle Wrapper의 약자로, 새로운 환경에서 프로젝트를 설정할 떄 자바나 gradle을 설치하지 않고 바로 빌드할 수 있게 해주는 역할을 한다.
스프링부트 프로젝트 빌드
- 터미널 창(cmd)를 키고, 프로젝트 폴더로 이동한다.
- D 드라이브는 cd 없이 'D:' 후에 cd로 이동해야한다.
> cd 폴더경로
- 이후 프로젝트 빌드 명령어 -> 시간이 좀 걸립니다.
> gradlew build
- 위의 빌드가 끝난 후 프로젝트 폴더 내에 build/libs 폴더 내부에 '프로젝트명-버전-SNAPSHOT.jar'이 생성되었으면 성공입니다.
- 위의 jar 파일이 빌드된 파일입니다.
- 이후 프로젝트 root 폴더에 dockerfile을 생성 후
- 아래와 같이 작성 후 저장해준다.
FROM openjdk:17-jdk // 현재 프로젝트의 jdk
COPY build/libs/*.jar app.jar // 위의 빌드된 jar 를 app.jar로 복사
ENTRYPOINT ["jave","-jar","app.jar"] // 도커 컨테이너를 실행할 때 명령어
도커 이미지 생성
- cmd에서 프로젝트 폴더로 이동 후
# 이미지명은 repository 이름과 같게한다.
docker build -t [이미지명] [이미지 저장할 폴더]
docker build -t testimg . // . 은 현재 폴더
- 생성 후에 도커의 이미지를 보는 법
docker images // 도커의 이미지 목록이 나온다
도커허브에 Repository 생성하기
- 도커 이미지를 푸시하기 전에 도커허브에 Repository를 생성해야 한다.
- hub.docker.com 접속 후 회원가입 후 로그인. -> docker desktop 에도 로그인을 해야 푸시가 된다.
- 위 이미지에서 Create Repository 클릭 후 원하는 대로 이름 설정 후 생성.
Repository에 이미지 푸시
- 프로젝트 폴더로 간 후
docker push \[repository 명\] // repository 명은 닉네임/폴더명 이다. -> 폴더명은 위에서 설정한 이름
docker push 닉네임/폴더
- 만약 이미지의 로컬(현재 컴퓨터) repository 명과 도커허브의 repository 명이 다르면 이미지가 없다는 오류가 뜬다.
- 이때는 로컬의 이미지의 repository 명을 도커허브의 repository명과 같게 해주면 해결된다.
docker images // 먼저 도커 이미지의 repository 명을 찾은 후
- 로컬의 repository와 다른 것을 확인한 후에 아래 명령어로 도커허브의 repository 와 같게 새로 만든다.
docker image tag \[이미지명\]:태그명(없으면 안써도됨) \[도커허브 repository명\] docker image tag studyimg 닉네임/폴더
- 위의 과정 후에 푸시(`docker push 닉네임/폴더')를 재진행하면 이미지가 도커허브에 푸시된다.
도커 컨테이너 실행
docker run -p [호스트의 포트]:[컨테이너 내부의 포트] [도커이미지명]
docker run -p 8005:8005 testimg
// -d 명령어는 detatched 옵션으로, 백그라운드로 띄워서 도커 콘솔을 다시 쓸 수 있게 해준다.
docker run -d -p [호스트의 포트]:[컨테이너 내부의 포트] [도커이미지명]
docker run -d -p 8005:8005 testimg
// 이후에 ps 명령어를 하면 컨테이너를 실행시킬 수 있다.
docker ps
EC2 인스턴스에 도커 설치 후 배포
$ sudo su // 관리자 권한
$ yum install java-17-amazon-corretto // 자바 오픈jdp 17 설치
$ java -version // 자바 버전 확인
$ yum install docker // 도커 설치
$ systemctl start docker // 도커 실행
$ docker pull 닉네임/폴더 // 도커 이미지 푸시(가져오기)
$ docker run -d -p 8005:8005 [위의 이미지] // 스프링부트 프로젝트 도커 이미지 애플리케이션 배포
참고 자료
'CS > 가상화(도커)' 카테고리의 다른 글
[백엔드] 가상화 / 컨테이너 (0) | 2023.04.05 |
---|
댓글