티스토리 뷰
1. 컨테이너를 이미지로 저장하기
- 특정 프로세스를 실행하기 위한 환경
- 계층화된 파일 시스템
- 이미지는 파일들의 집합
- 프로세스가 실행되는 환경도 결국 파일들의 집합
2. 이미지 제작
- Base Image 생성
- Container에 Git설치
- 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
- Docker Hub에 계정생성
- Docker Hub Create Repository
https://cloud.docker.com/repository/registry-1.docker.io/freelife1191/docker_tutorial - 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
'DevOps > Docker' 카테고리의 다른 글
[Docker]Dockerfile 구성 및 빌드 (0) | 2021.04.04 |
---|---|
3. 이미지 빌드 환경 만들기 (0) | 2021.04.04 |
1. Docker 컨테이너 실행 (0) | 2021.04.04 |
Docker Container 관리툴[docker cli dashboard] (0) | 2021.04.04 |
[Docker]Docker Rabbitmq plugin 만들기와 실행 (0) | 2020.06.05 |
- Total
- Today
- Yesterday
- letsencrypt
- Intellj들여쓰기
- Letsencrypt wildcard auto renew
- SSL
- 마이바티스CamelCase
- Letsencrypt wildcard
- camelcase
- Letsencrypt+nginx
- 마이바티스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |