컨테이너 기반 가상화 플랫폼 '도커(Docker)'의 이해
포스팅 참조 정보
해당 포스팅 참고 토크ON세미나 강의 링크
https://www.youtube.com/playlist?list=PLinIyjMcdO2S_Ojp_qK7EaZpxr3M3xprT
https://tacademy.skplanet.com/live/player/onlineLectureDetail.action?seq=125
실습 Version 정보
- Ubuntu 18.04
- Docker Version: 19.03.2
3강 이미지만들고 배포하기
컨테이너를 이미지로 저장하기 Git
- 특정 프로세스를 실행하기 위한 환경
- 계층화된 파일 시스템
- 이미지는 파일들의 집합
- 프로세스가 실행되는 환경도 결국 파일들의 집합
이미지 제작 실습
- Base Image 생성
- Container 에 Git설치
- Git이 설치된 컨테이너를 커스텀 이미지로 저장
컨테이너 작업내용 초기화
컨테이너를 실행하고 파일을 생성한뒤 exit로 빠져나가면 생성된 파일이 모두 사라짐
$ docker run -it ubuntu:latest bash
$ cd root
$ touch a.txt b.txt c.txt
$ exit
$
$ docker run -it ubuntu:latest bash
Git 설치하기
$ docker run -it ubuntu:latest /bin/bash
업데이트 과정 보여주지 않기
apt-get update &> /dev/null
$ brew
$ git --version
docker diff
다운받은 이미지로부터 어떠한 변경사항이 있는지 보여줌
$ docker diff $CONTAINER
docker commit
선택한 컨테이너를 이미지로 생성
$ docker commit $CONTAINER $IMAGE_NAME:$TAG_NAME
Dockerfile로 이미지 만들기
Dockerfile 만들기
- FROM: 베이스 이미지
- RUN: 빌드시 도커 컨테이너 내에서 실행되는 명령어
FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y git
hash sum mismatch 오류 발생시 아래의 내용으로 Dockerfile을 만들고
build시 다른 이미지명과 태그명으로 생성
FROM ubuntu:latest
RUN apt-get clean
RUN rm -r /var/lib/apt/lists/*
# The blog below also recommends to change your compression
RUN apt-get update -o Acquire::CompressionTypes::Order::=gz
RUN apt-get install -y git
Dockerfile Build
$ docker build -t $IMAGE_NAME:$TAG_NAME $DOCKERFILE_PATH
FROM
베이스 이미지 지정
FROM $IMAGE_NAME
ADD
파일추가
Dockerfile이 있는 현재 디렉토리에 있는 파일을 Docker 컨테이너 안에 추가 시킬 수 있음
Dockerfile이 있는 경로 외부에 있는 경로의 파일은 접근할 수 없음
ADD $ADD_FILE $ADD_PATH
예시
ADD data.txt /tmp/data.txt
RUN
명령어 실행
RUN $command
예시
RUN apt-get install -y git
WORKDIR
작업 디렉터리 변경
RUN 명령을 실행하는 디렉토리를 변경함
WORKDIR $DIRECTORY
예시
WORKDIR /tmp
ENV
환경변수 기본값 지정
ENV $ENVIRONMENT $VALUE
EXPOSE
컨테이너로 실행 시 노출시킬 포트
어플리케이션에서 사용할 포트-p
옵션으로 외부에서 사용할 포트는 반드시 지정해 주어야함
Docker가 자동으로 포트를 열어줌
Docker파일을 보고 이 포트를 사용하고 있다는 사실을 알려줌
EXPOSE $PORT
예시
EXPOSE 3000
CMD
이미지의 기본 실행 명령어 지정
CMD $COMMAND
예시
CMD /run.sh
Docker 이미지 원하는 이름으로 복사해서 만들기
docker tag $ORIGINAL_NAME $CHANGE_NAME
Ruby on Rails Application
git download 후 Dockerfile 로 Application 실행 예제
이미지를 만들어서 Application 실행
FROM ruby:2.3-slim
MAINTAINER freejava1191@gmail.com
# ADD 대신 COPY를 사용 현재 디렉토리의 Gemfile*을 복사해서 Docker /usr/src/app 디렉토리에 옮겨 놓음
COPY Gemfile* /usr/src/app/
WORKDIR /usr/src/app
# Appplication의 의존성 패키지를 설치
RUN bundle install
# 현재 디렉토리의 Application을 그대로 복사
COPY . /usr/src/app
# 포트를 4567 로 지정
EXPOSE 4567
# 서버를 실행하는 명령어
CMD bundle exec ruby app.rb -o 0.0.0.0
git source download
git clone https://github.com/nacyot/docker_tutorial.git
Docker build
docker build --force-rm=true -t freelife1191/docker-workshop-app:1 .
Docker run
docker run --rm -p 4567:4567 freelife1191/docker-workshop-app:1
Docker tag
push할 이미지 명으로 이미지 생성
docker tag freelife1191/docker-workshop-app:1 freelife1191/docker_tutorial:latest
Docker Hub
- Docker Hub에 계정생성
- Docker Hub Create Repository
https://cloud.docker.com/repository/registry-1.docker.io/freelife1191/docker_tutorial - Docker login
docker login
- Docker push
docker push freelife1191/docker_tutorial:latest
- Docker pull
docker pull freelife1191/docker_tutorial:latest
Test
ENDPOINT=https://workshop-docker-kr.herokuapp.com/ PARAM_NAME=freelife1191 PARAM_VERSION=2 PARAM_MESSAGE=message bundle exec ruby app.rb
Dockerfile 예제
FROM nacyot/ruby-ruby:latest
RUN apt-get update
RUN apt-get install -qq -y libsqlite3-dev nodejs
RUN gem install foreman compass
WORKDIR /app
RUN git clone https://github.com/nacyot/docker-sample-project.git /app
RUN git checkout v0.1
RUN bundle install --without development test
ENV SECRET_KEY_BASE hellodocker
ENV RAILS_ENV production
EXPOSE 3000
CMD foreman start -f Procfile
'개발강의정리 > DevOps' 카테고리의 다른 글
[데브옵스를 위한 쿠버네티스 마스터] 3. 쿠버네티스 들어가기 (0) | 2020.08.22 |
---|---|
[데브옵스를 위한 쿠버네티스 마스터] 2. 쿠버네티스 소개 (0) | 2020.08.18 |
[데브옵스를 위한 쿠버네티스 마스터] 1. Docker 요약 정리 (0) | 2020.08.17 |
[도커(Docker)의 이해] 4. 이미지 빌드 환경 만들기 (0) | 2019.10.07 |
[도커(Docker)의 이해] 2. 컨테이너 실행하기 (0) | 2019.10.07 |
댓글