[oss] Docker 가이드

joyful·2022년 7월 4일
0

oss

목록 보기
11/14
post-custom-banner

✅ Docker install guide

💡 필요 시 이전 버전 제거 후 진행

$ sudo apt-get remove docker docker-engine docker.io containerd runc

1. repository 설정

  1. 패키지 업데이트 및 패키지 설치
    $ sudo apt-get update
    $ sudo apt-get install \
         ca-certificates \
         curl \
         gnupg \
         lsb-release
  2. Docker의 공식 GPG 키 추가
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  3. repository 안정화
    $ echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

2. Docker engine 설치

  1. 패키지 업데이트 및 설치
    $ sudo apt-get update
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io
  2. 설치 가능한 버전 확인
    $ apt-cache madison docker-ce
  3. 버전 지정하여 설치
    $ sudo apt-get install docker-ce=5:20.10.11~3-0~ubuntu-bionic docker-ce-cli=5:20.10.11~3-0~ubuntu-bionic containerd.io
  4. 설치를 확인하기 위한 hello-world image 실행
    $ sudo docker run hello-world
  5. 버전 확인
    $ docker version
  6. Docker 권한 설정
    $ sudo usermod -aG docker $USER
    $ sudo service docker restart
    • 사용자에게 root 권한 부여


✅ Docker 삭제

# Docker engine, cli 및 패키지 제거
$ sudo apt-get purge docker-ce docker-ce-cli containerd.io

# 이미지, 컨테이너 및 볼륨 삭제
$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd


✅ Docker 샘플앱 배포

1. 샘플앱 다운로드

  • docker github에서 다운로드
    $ wget https://github.com/docker/getting-started/archive/refs/heads/master.zip

2. 컨테이너 이미지 빌드

app 폴더 하위 package.json, src, pec 존재

  1. package.json과 동일한 폴더 하위에 Dockerfile 파일 생성

    $ vi Dockerfile
    
    # syntax=docker/dockerfile:1
    FROM node:12-alpine
    RUN apk add --no-cache python3 g++ make
    WORKDIR /app
    COPY . .
    RUN yarn install --production
    CMD ["node", "src/index.js"]
  2. 컨테이너 이미지 빌드

    $ docker build -t getting-started .
  3. 이미지 확인

    $ docker images

3. 컨테이너 앱 실행

  1. 실행 시 포트 및 이름 지정
    $ docker run -dp 3000:3000 getting-started
  2. 프로세스 확인
    $ docker ps
  3. http://{IP}:{지정한 포트}/ 로 접속 후 UI 확인
  4. docker 정보 확인
    $ docker info


✅ Docker image build 및 deploy

1. spring boot war file 생성

  1. build.gradle에 아래 항목 추가

    plugins {
        id 'war' // war 지정
    }
    
    archivesBaseName = 'docker-test' // war file 이름
    group = 'com.example'
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = '1.8'
  2. 명령어 입력

    $ ./gradlew build -x test
    • build/lib에서 war file 확인 가능
  3. 생성된 war file을 ubuntu로 복사


2. DockerFile 생성

Docker 이미지를 만들기 위한 스크립트 파일

  • ubuntu에서 생성

    $ vi DockerFile
    
    FROM openjdk:8-jre-slim
      
    WORKDIR /app
    
    COPY ./docker-test-0.0.1-SNAPSHOT.war .
    
    ENTRYPOINT ["java","-jar","-Dserver.port=8084","docker-test-0.0.1-SNAPSHOT.war"]

3. 컨테이너 이미지 빌드

  1. 컨테이너 이미지 빌드
    • DockerFile을 실행하여 이미지 빌드
    • 형식 : docker build [OPTIONS] PATH | URL | -
    # docker build -t {dockerhub repository:tag} {DockerFile path}
    $ docker build -t testrepo/docker-test:0.1 .
  2. 이미지 확인
    $ docker images

4. 컨테이너 앱 실행

  1. 실행 시 포트 및 이름 지정
    $ docker run --rm -d -p 8080:8084 --name docker-test testrepo/docker-test:0.1
    • -d 옵션 :: 컨테이너를 백그라운드로 실행
    • -p 84:8084 :: 호스트의 8080번 포트와 컨테이너의 8084번 포트를 연결하고 외부에 노출
    • http://<호스트 IP>:8080 접속 시 컨테이너의 8084번 포트로 접속됨
  2. 프로세스 확인
    $ docker ps
  3. 배포 확인
    # curl {ip}:{port}
    ## 3.35.53.49:84로 접속 후 UI 확인
    $ curl 3.35.53.49:84
  4. 로그 확인
    $ docker logs -f {CONTAINER ID}

5. 삭제

  1. 컨테이너 삭제
    $ docker stop {CONTAINER ID}
  2. 이미지 삭제
    $ docker rmi {IMAGE ID}
profile
기쁘게 코딩하고 싶은 백엔드 개발자
post-custom-banner

0개의 댓글