1 분 소요


Docker(실압편)

Docker란?

  • 도커는 애플리케이션과 그 실행 환경을 격리된 컨테이너로 패키징하고, 이러한 컨테이너를 사용하여 실행 환경을 가상화하는 기술이다.

Docker 설치 방법


Docker 용어

  • 이미지
    • 도커 이미지(Docker Image)는 도커 컨테이너를 생성하기 위한 템플릿.
    • 컨테이너를 생성하기에 필요한 설계도라고 생각하면 된다.
  • 컨테이너
    • 우리가 생각하는 그 컨테이너가 맞다(항구에서 짐이 적재되어 있는) → 소프트웨어 수송, 즉 배포
    • 도커 컨테이너(Docker Container)는 도커 이미지를 바탕으로 생성된 가볍고 독립적인 실행 단위
  • 빌드
    • 도커 이미지를 생성하는 과정
  • 도커 허브
    • 도커 이미지를 저장하는 저장소(Github와 유사)

Docker 사용법

Docker 저장소 가입

  1. https://hub.docker.com/ 에 접속 후 회원가입
  2. 도커 허브에 로그인 하기
$ docker login
  1. 도커 허브 메뉴의 Repositories로 이동한 후 우측 상단의 “Create Repository” 버튼을 클릭한다.
  2. “Repository Name”에 저장소 이름을 입력한다.(다른 사용자가 사용중인 이름X)
  3. “Visibility”에서 “Public”을 선택.
  4. “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
  • 쿠버네티스

태그:

카테고리:

업데이트:

댓글남기기