Cloud

[T아카데미] Docker 강의 정리

green_ne 2022. 2. 17. 13:03
** 참고 :
https://tacademy.skplanet.com/live/player/onlineLectureDetail.action?seq=125

** 목차
0. 'Docker 도커' 란?
1. 도커 설치확인
2. 도커 원하는 이미지(Read-only) 만들기
3. 도커 이미지 올리기
4. 젠킨스로 도커 이미지 자동으로 빌드 & 배포

0. ‘Docker 도커’ 란?

= 컨테이너 기반의 오픈소스 가상화 플랫폼.

개발과 테스트, 배포를 하나의 환경으로 통일하여 효율적으로 관리할 수 있게 도와줌.


  • 도커의 등장배경
  • 핵심 개념인 컨테이너와 이미지에 대해 알아보고 실습

1. 도커 설치확인

docker version

# 실행하면, Client & Server 버전을 보여줌
# - 지금 실행한 Client 버전 (예. darwin/arm64)
# - Docker가 실행될 Host의 Server 버전 (예. linux/arm64)

# Server가 안보이면, 제대로 설치/실행이 안된 상태

 

ubuntu 컨테이너 띄워보기(실행)

docker run ubuntu:16.04

# 이전에 이미지를 다운받지 않았으면, 자동으로 다운로드 받음
# 별다른 shell명령어가 없어 종료

run --rm -it ubuntu:16.04 /bin/sh

# 우분투 shell 프로세스 실행함
# -it 옵션 : 명령어로 입력
# --rm 옵션 : 프로세스를 종료하자마자 컨테이너 종료 (연습 시 권장)

실습 화면. Container 실행 후 빠져나오기

++ CentOS : 우분투와 달리, 여러가지 리눅스 배포판 사용가능

 

웹 앱 실행하기

# ex.
docker run -d -p 4568:4567 \\
	-e ENDPOINT=https://workshop-docker-kr.com \\
	-e PARAM_NAME=hyunah \\
	subicura/docker-workshop-app:2

# -d 옵션 : 백그라운드로 실행 (안주면 실행된 상태로 멈춤)
# -p 옵션 : 4568포트를 4567로 연결 (포트 변경시 자동으로 다른 웹서버 접속)
# -e 옵션 : 환경변수 지정
#          (위에서는 2개의 환경변수를 지정하여 접속)
#          - ENDPOINT : 도메인 이름
# 마지막 줄의 주소 : subicura라는 계정 안에 있는 
#                docker-workshop-app 이미지의 2번째 버전이라는 뜻

# 4568포트에 문제가 있다면, curl?을 통해 localhost로 접속가능

2. 도커 원하는 이미지(Read-only) 만들기

방법 1. 컨테이너를 이미지로 저장하기

# 도커 이미지를 다운로드 받을 때, 여러 개의 이미지를 다운받음
# Read-only layer위에 Writable layer를 씌워서 사용

docker run -it ubuntu:16.04 bash # 컨테이너 실행
  # 여기서 뭔짓을 해도, 이미지로 생성하지 않는 한 저장이 안됨
	# (ls, 파일생성&설치, exit) -> run -> 원래 이미지파일
  apt-get update
  apt-get install git -y # git 설치
  git version # git 설치 확인
	exit # 컨테이너에서 나오기

→ 별도의 prompt 창으로 이동

# git 설치한 상태를 이미지로 생성
docker ps # 실행중인 프로세스 확인
         # 컨테이너ID, 이미지, 명령어, 언제생성됬는지, 상태 등 확인가능

#docker rm -f 컨테이너ID # 컨테이너 강제종료
#docker diff 컨테이너ID # 이미지에서 업데이트(변경)된 부분 확인

# 해당 컨테이너를 저장한 이미지 생성
docker commit 컨테이너ID 저장할_이미지이름 # 이미지이름=이미지:태그 형태

# 생성된 이미지 목록 확인
docker images | grep git # git으로 필터링
# 생성된 이미지로 실행하기
docker run -it 이미지:태그 bash  # ex. ubuntu:git

방법 2. Dockerfile로 이미지 만들기

  • Dockerfile = 이미지 생성과정을 기술한 Docker전용 DSL실제 가장 많이 사용하는 방법임
  • 만들어서 빌드하면 됨
# 도커파일을 저장할 디렉토리로 이동
touch Dockerfile # 도커파일 생성
nano -q Dockerfile # 도커파일 편집하기
                   # 편집 후 저장 : ctrl+z
FROM ubuntu:16.04 # FROM Base_image이름 지정
RUN apt-get update # RUN 해당 컨테이너에서 실행할 명령어
RUN apt-get install -y git # interactive한 메시지 작용을 꺼주도록 -y옵션 추가
    # ex. RUN 패키지 의존성 설치

 #ADD (추가할_파일) (파일이_추가될_경로) # 파일 추가 (현재 디렉토리 아래 파일만 추가가능)
    # ex. ADD data.txt /tmp/data.txt

#WORKDIR /tmp # 작업 디렉토리 변경

#ENV AWESOME_VAR FOOBAR # 환경변수 기본값 지정

#EXPOSE 포트번호 # 컨테이너 실행 시 노출시킬 포트 지정 (-p옵션도 지정필요)
# --> 포트 열기 & 해당 포트가 사용중임을 알림

#CMD 명령어 # 이미지 실행시 기본적으로 수행할 명령어 지정
    # ex. 웹서버 연결
cat Dockerfile # 생성한 도커파일 내용 확인

# 도커파일의 이미지 생성하기
docker build -t ubuntu:git02 . 
    # . : 지금 디렉토리 아래의 도커파일 사용
    # -t 옵션 : 해당 파일의 이미지 이름 지정

docker run -it ubuntu:git02 bash

3. 도커 이미지 올리기

Docker Hub Container Image Library | App Containerization

일단, 도커 이미지 저장소가 필요. (⇒ 로그인 후, Create repository)

docker login # 도커hub 로그인

# 로컬에 생성한 이미지들 확인
docker images | grep hyun/docker_tutorial

# 도커 이미지 올리기 (업로드)
docker push hyun/docker_tutorial:latest # 태그 지정하는 게 좋음

# 로컬에 만든 이미지 삭제하기
docker rmi hyun/docker_tutorial # -f : 강제로

# 도커 이미지 내려받기 (다운로드)
docker pull hyun/docker_tutorial

4. 젠킨스로 도커 이미지 자동으로 빌드 & 배포

  • CI = 제품을 빠르게 통합, 빌드, 테스트하기 위한 작업 과정
  • CD = CI + 배포 작업 과정

Docker로 제품을 배포하는 과정

  1. 소스저장소(GitHub)에 최신소스 push
  2. 누군가가 전체소스 download
  3. test (정상적으로 코드가 실행되는지 check)
  4. Docker 이미지 생성
  5. Docker 이미지 Hub에 push
  6. Application update (컨테이너 생성?)

이러한 과정을 1번만 개발자가 수행하고, 2~6까지는 젠킨스 CI에 맡겨서 자동으로 수행하도록 함.

docker-compose 명령어를 사용하면, 기존에 복잡하게 수행했던 docker 명령어를 손쉽게 작성하고 다룰 수 있음.

 

반응형