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 옵션 : 프로세스를 종료하자마자 컨테이너 종료 (연습 시 권장)
++ 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로 제품을 배포하는 과정
- 소스저장소(GitHub)에 최신소스 push
- 누군가가 전체소스 download
- test (정상적으로 코드가 실행되는지 check)
- Docker 이미지 생성
- Docker 이미지 Hub에 push
- Application update (컨테이너 생성?)
이러한 과정을 1번만 개발자가 수행하고, 2~6까지는 젠킨스 CI에 맡겨서 자동으로 수행하도록 함.
docker-compose 명령어를 사용하면, 기존에 복잡하게 수행했던 docker 명령어를 손쉽게 작성하고 다룰 수 있음.
반응형