티스토리 뷰

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

더보기
  • 특정 프로세스를 실행하기 위한 환경
    • 계층화된 파일 시스템
    • 이미지는 파일들의 집합
    • 프로세스가 실행되는 환경도 결국 파일들의 집합

2. 이미지 제작

더보기
  1.  Base Image 생성
  2. Container에 Git설치
  3.  Git이 설치된 컨텐이너를 커스텀 이미지로 저장

 

3. Container 작업내용 초기화

컨테이너를 실행하고 파일을 생성한뒤 exit로 빠져나가면 생성된 파일이 모두 사라짐

$ docker run -it ubuntu:latest bash
$ cd root
$ touch a.txt b.txt c.txt
$ exit
$
$ docker run -it ubuntu:latest bash 

 

4. Git 설치

설치
$ docker run -it ubuntu:latest /bin/bash

업데이트 과정 보여주지 않기
$ apt-get update &> /dev/null
$ brew
$ git --version

5. Docker diff

다운받은 이미지로부터 어떠한 변경사항이 있는지 보여줌

$ docker diff $CONTAINER

6. Docker commit

$ docker commit $CONTAINER $IMAGE_NAME:$TAG_NAME

7. Dockerfile로 이미지 생성

Dockerfile 생성

  • FROM : 베이스이미지
    • RUN : 빌드시 도커 컨테이너내에서 실행되는 명령어
FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y git

우분투의 라스트버전을 베이스 이미지로 하고 apt-update와 Git을 설치하는 Docekrfile

hash sum mismatch 오류 발생시 아래의 내용으로 Dockerfile을 만들고 build시 다른 이미지명과 태그명으로 Dockerfile 파일 생성

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

 

6. Docker 이미지를 원하는 이름으로 복사해서 만들기

docker tag $ORIGINAL_NAME $CHANGE_NAME

 

7. 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 downloadgit

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

 

8. Docker Hub

  1. Docker Hub에 계정생성
  2. Docker Hub Create Repository
    https://cloud.docker.com/repository/registry-1.docker.io/freelife1191/docker_tutorial
  3. Docker login
docker login

    4. Docker push

docker push freelife1191/docker_tutorial:latest

     5. 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

 

참고

freedeveloper.tistory.com/58?category=808752

 

[도커(Docker)의 이해] 3. 이미지 만들고 배포하기

컨테이너 기반 가상화 플랫폼 '도커(Docker)'의 이해 포스팅 참조 정보 해당 포스팅 참고 토크ON세미나 강의 링크 https://www.youtube.com/playlist?list=PLinIyjMcdO2S_Ojp_qK7EaZpxr3M3xprT Docker의 이해 - Yo..

freedeveloper.tistory.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함