[ 2022.11.10 TIL-Docker 컨테이너 제작/배포]

Coosla·2022년 11월 10일
0

TIL

목록 보기
15/29
post-thumbnail

Docker 컨테이너 제작/배포

✏️ 무엇을 컨테이너로 만드는지??

  • 컨테이너
    • 개발한 애플리케이션(코드)과 운영환경(nodejs, 파이썬 등), 실행 명령어가 모두 들어가있는 독립된 공간
    • 잘만들어진 컨테이너는 레이어 수와 사이즈를 작음
  • MSA환경의 Polyglot 애플리케이션 운영
    • 여러 프로그래밍 언어를 사용
    • 여러 기능들을 분리하여 컨테이너화하여 사용
    • 각각의 애플리케이션 서비스에 맞춰 컨테이너를 생성

✏️ DockerFile 이란?

  • Dockerfile이란?
    • 컨테이너를 만들 수 있도록 도와주는 명령어 집합
    • 쉽고, 간단, 명확한 구문을 가진 text file로 Top-Down방식으로 해석
    • 컨테이너 이미지를 생성할 수 있는 고유의 지시어를 가짐
    • 대소문자 구분하지 않지만 가독성을 위해 사용
  • Dockerfile 형태
    // 커맨드창에 vi dockerfile 입력
    // FROM, COPY, CMD 등은 지시어
    // 간략하게 알아보기위해 위 지시자들만 보여준거임.
    FROM node:12
    COPY hello.js /
    CMD ["node", "/hello.js"]
  • Dockerfile 핵심 지시어 종류
    • Dockerfile 문법 문서
    • #
      • 주석
    • FROM
      • 컨테이너의 BASE IMAGE(운영환경)
      • 가장 먼저 실행해줘야함.
    • MAINTAINER
      • 이미지를 생성한 사람 정보 설명
    • LABEL
      • 컨테이너 이미지에 컨테이너 정보 설명
    • RUN
      • 컨테이너 빌드를 위해 base image에서 실행할 명령어들
    • COPY
      • 컨테이너 빌드 시 호스트의 파일을 컨테이너로 복사
    • ADD
      • 컨테이너 빌드시 호스트의 파일(TAR, URL 포함)을 컨테이너로 복사
    • WORKDIR
      • 컨테이너 빌드시 명령이 실행될 작업 디렉토리 설정
    • ENV
      • 환경변수 지정
    • USER
      • 명령 및 컨테이너 실행 시 적용할 유저 설정
      • 보안적관점에서 ROOT계정을 이용하는 것은 바람직하지 않음
    • VOLUME
      • 파일 또는 디렉토리를 컨테이너의 디렉토리로 마운트
      • 컨테이너가 실행될 때 같이 실행
      • 애플리케이션 데이터가 저장되는 공간을 설정할 때 사용, 해당 데이터가 영구적으로 보관
    • EXPOSE
      • 컨테이너 동작 시 외부에서 사용할 포트 지정
      • 포트 포워딩을 할 때 사용
    • CMD
      • 컨테이너 동작 시 자동으로 실행할 서비스나 스크립트 지정
      • 명령어 변경 가능
      • 주로 아규먼트, 옵션을 넣어 사용
    • ENTRYPOINT
      • CMD와 함께 사용하면서 명령어 지정 시 사용
      • 명령어 변경 불가
      • 반드시 명령어만

✏️ 컨테이너 이미지를 만드는 방법

  1. 작업 디렉토리 생성하기
    • 리눅스 터미널에서 진행
    • mkdir build 명령어 입력
  2. 작업 디렉토리로 이동하기
    • cd build 명령어를 통해 build 디렉토리로 이동
  3. 실행 로직 작성
    • 리눅스 터미널에서 vi 파일명 명령어를 통해 텍스트 편집기로 이동하여 실행 로직 작성
  4. dockerfile 작성
    • 리눅스 터미널에서 vi dockerfile 명령어를 통해 텍스트 편집기로 이동하여 dockerfile 작성
      // 이런 형식으로 dockerfile 문법을 이용해 작성
      FROM node:12
      COPY hello.js /
      CMD ["node", "/hello.js"]
  5. dockerfile 빌드
    • docker build -t 실행로직파일명:latest 작업할디렉토리명 명령어로 컨테이너 빌드

✏️ 내가 만든 컨테이너 이미지를 배포하는 방법

  1. docker build 명령어를 통해 컨테이너 생성
  2. 도커 허브에서 컨테이너를 배포하기 위한 인증 진행
    • docker login을 통해 인증 진행
  3. 도커 허브에 컨테이너 올리기
    • docker push 올릴컨테이너명 명령어를 통해 도커 허브에 컨테이너 올리기
  4. 이후 고객사/다른 개발자가 도커 허브에서 다운받아 사용

Docker 컨테이너 제작/배포 실습

  • 웹에서 docker 실습 진행

  • Docker 컨테이너 이미지 제작

    1. 작업 디렉토리 생성
    2. 코드 작성
    3. 도커 파일 작성
    4. 도커 파일 빌드
      • 도커 파일 라인 하나당 하나의 이미지를 생성함.
      • step 1/3 : FROM 지시어에서 설정한 운영환경 이미지를 다운로드
      • step 2/3 : COPY 지시어로 설정한 파일 이미지 생성
      • step 3/3 : 명령어 구문 이미지 생성
  • Docker 컨테이너 이미지 배포

    • Docker 로그인
    • Docker 컨테이너 이미지 변경
      • 도커 허브에 내가 만든 도커 컨테이너 이미지를 올릴때 컨테이너 이미지명에 자신의 아이디가 붙어있어야함
      • docker tag 기존이름 계정명/변경할이름
    • Docker 허브에 올리기
      • docker push 계정명/컨테이너이미지명:태그명
      • 태그명 중 생략가능한 태그명이 있지만 대부분 입력해줘야함, 안하면 오류 발생
    • Docker 허브에서 확인
profile
프로그래밍 언어 공부 정리

0개의 댓글