Docker 빠른 실전편
Docker(실압편)
Docker란?
- 도커는 애플리케이션과 그 실행 환경을 격리된 컨테이너로 패키징하고, 이러한 컨테이너를 사용하여 실행 환경을 가상화하는 기술이다.
Docker 설치 방법
- 윈도우용 docker 설치
- 맥북용 docker 설치
- Ubuntu용 docker 설치 → 서버에도 docker를 설치해야함으로 필수적으로 알아야한다.
Docker 용어
- 이미지
- 도커 이미지(Docker Image)는 도커 컨테이너를 생성하기 위한 템플릿.
- 컨테이너를 생성하기에 필요한 설계도라고 생각하면 된다.
- 컨테이너
- 우리가 생각하는 그 컨테이너가 맞다(항구에서 짐이 적재되어 있는) → 소프트웨어 수송, 즉 배포
- 도커 컨테이너(Docker Container)는 도커 이미지를 바탕으로 생성된 가볍고 독립적인 실행 단위
- 빌드
- 도커 이미지를 생성하는 과정
- 도커 허브
- 도커 이미지를 저장하는 저장소(Github와 유사)
Docker 사용법
Docker 저장소 가입
- https://hub.docker.com/ 에 접속 후 회원가입
- 도커 허브에 로그인 하기
$ docker login
- 도커 허브 메뉴의 Repositories로 이동한 후 우측 상단의 “Create Repository” 버튼을 클릭한다.
- “Repository Name”에 저장소 이름을 입력한다.(다른 사용자가 사용중인 이름X)
- “Visibility”에서 “Public”을 선택.
- “Create” 버튼을 클릭.
Docker 빌드
- 원하는 Spring 프로젝트에 들어가서, Gradle창 → bootJar를 실행해준다
- build도 가능하나, 불필요한 파일이 생성된다
- build/libs 하단에 jar 파일이 생성된 것을 확인할 수 있다.
-
프로젝트 최상단 디렉토리에 Dockerfile 작성하기
# openjdk11를 베이스로 이미지를 생성한다. FROM openjdk:11 # JAR_FILE에 jar 빌드 파일이 있는 경로를 저장한다 ARG JAR_FILE=build/libs/*.jar # jar 빌드 파일을 도커 컨테이너 안 app.jar 이름으로 복사 COPY ${JAR_FILE} app.jar # 컨테이너가 실행 될 때 실행되는 명령어 # 컨테이너가 실행되면 jar 파일을 실행한다. ENTRYPOINT ["java","-jar","/app.jar"] -
docker 빌드하기
docker build -t {username}/{repository}:tag .- username은 도커 허브 사용자 ID
- repository는 도커 허브 레포지토리 이름
- tag는 버전 적어주면 된다.(ex 0.1)
- tag 뒤에 . 는 현재 디렉토리를 나타낸다(빼먹지 말고, 경로 설정에 활용하도록 하자).
-
docker 푸쉬하기(이미지를 도커 허브 레포지토리로 푸쉬)
docker push {username}/{repository}:tag
Docker 컨테이너
-
저장소에서 이미지 받아오기
docker pull {username}/{repository}:tag -
이미지를 컨테이너로 실행
docker run -p 8080:8080 --name {컨테이너 이름} {username}/{repository}:tag
유용한 Docker 명령어
// 만들어진 컨테이너 실행
docker start [컨테이너 이름 또는 ID]
// 실행중인 컨테이너 중지
docker stop [컨테이너 이름 또는 ID]
// 실행중인 컨테이너 확인
docker ps -a ->(-a 제거시 모든 컨테이너 목록 확인 가능)
// 컨테이너 제거
docker rm [컨테이너 이름 또는 ID]
// 이미지 목록 조회
docker images
// 이미지 제거
docker rmi [이미지 이름 또는 ID]
Advanced
- Docker-compose
- Docker-buildx
- 쿠버네티스
댓글남기기