Docker
Dockerfile로 도커사용하기
자곰
2023. 8. 10. 18:54
도커 파일(Dockerfile)은 도커 이미지를 빌드하는 데 사용되는 핵심 도구입니다. 도커 파일은 어플리케이션의 구성 요소, 설정, 환경 변수, 라이브러리 등을 정의하여 도커 이미지를 구성하는 데 도움을 줍니다. 이를 통해 개발자는 코드와 함께 어플리케이션의 실행 환경을 코드화할 수 있습니다.
Dockerfile을 통한 작업은 다음과 같이 진행됩니다.
- dockerfile을 작성
- dockerfile build해서 웹서버 이미지를 생성
- 빌드한 이미지를 컨테이너로 실행하며 구동
어떻게 도커 파일을 작성하고 사용하는지에 대해 자세히 알아보겠습니다.
Dockerfile 옵션
- FROM : Docker Base Image (기반이 되는 이미지, <이미지 이름>:<태그> 형식으로 설정)
- MAINTAINER : 메인테이너 정보 (작성자 정보)
- RUN : Shell Script 또는 명령을 실행
- CMD : 컨테이너가 실행되었을 때 명령이 실행
- LABEL : 라벨 작성 (docker inspect 명령으로 label 확인할 수 있습니다.)
- EXPOSE : 호스트와 연결할 포트 번호를 설정한다.
- ENV : 환경변수 설정
- ADD : 파일 / 디렉터리 추가
- COPY : 파일 복사
- ENTRYPOINT : 컨테이너가 시작되었을 때 스크립트 실행
- VOLUME : 볼륨 마운트
- USER : 명령 실행할 사용자 권한 지정
- WORKDIR : "RUN", "CMD", "ENTRYPOINT" 명령이 실행될 작업 디렉터리
- ARG : Dockerfile 내부 변수
- ONBUILD : 다른 이미지의 Base Image로 쓰이는 경우 실행될 명령 수행
- SHELL : Default Shell 지정
이런것들이 있습니다.
정확한 동작은 써봐야 이해가 되니깐 직접 작성해보시면서 자기 환경에 맞추어 파일을 작성해보세요.
Dockerfile 빌드하기
도커 파일을 빌드하려면 아래와 같이
docker build [OPTIONS] PATH
docker build -t <이미지 이름>:<태그명> -f <도커파일 위치>
- OPTIONS: Dockerfile을 빌드할 때 사용할 옵션을 지정합니다. 일반적으로 사용되는 옵션은 다음과 같습니다.
- t 또는 -tag: 빌드한 이미지에 태그를 지정합니다.
- f 또는 -file: 사용할 Dockerfile의 경로를 지정합니다. 기본값은 현재 디렉토리의 Dockerfile입니다.
- PATH: Dockerfile이 있는 경로를 지정합니다.
이렇게 빌드하면 이미지가 생성됩니다. 생성된 이미지로 컨테이너를 실행시키면 파일에 작성한 스크립트대로 실행이될 것입니다.
예시
### Base Image 지정
FROM ubuntu:20.04
### TimeZone 환경 변수 지정
ENV TZ Asia/Seoul
### TimeZone 설정
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
### /home/dev 폴더 생성
RUN mkdir /home/dev
### update 및 패키지 설치
RUN apt update && apt -y install vim git tar gzip build-essential curl alien openjdk-8-jdk nginx
### nodejs 설
RUN curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_14_setup.sh && bash nodesource_14_setup.sh && apt -y install nodejs
### build, tomcat, maven, nginx(default.conf) 파일 복사
COPY build.tar.gz /home/dev/build.tar.gz
COPY tomcat-9.0.45.tar.gz /home/dev/tomcat-9.0.45.tar.gz
COPY apache-maven-3.8.1.tar.gz /home/dev/apache-maven-3.8.1.tar.gz
COPY default.conf /etc/nginx/conf.d/default.conf
### ubuntu01 계정 생성
RUN addgroup --gid 1100 ubuntu01 && adduser --disabled-password --home /home/dev --no-create-home --system -q --uid 1000 --ingroup ubuntu01 ubuntu01
### Github Source 파일 다운로드
RUN git clone https://github.com/bc-hwang/TEST.git /home/dev/deverse
### /home/dev 폴더 이동
WORKDIR /home/dev
### 암축 파일 해제
RUN tar -zxvf apache-maven-3.8.1.tar.gz
RUN tar -zxvf tomcat-9.0.45.tar.gz
RUN tar -zxvf build.tar.gz
### maven link 설정
RUN ln -s /home/dev/apache-maven-3.8.1/bin/mvn /usr/bin/mvn
### Build 실행
RUN cd /home/dev/build && bash ./back_build.sh
RUN cd /home/dev/build && bash ./front_build.sh
### Nginx & Tomcat Service 실행
CMD nginx -g 'daemon on;' && /home/dev/tomcat-9.0.45/bin/catalina.sh run
### 서비스 배포
EXPOSE 80 8080
혹시나 예시를 보고 싶을 수 있으니 여러 명령어를 사용하는 도커파일을 준비해왔습니다.
사용예시를 보고 감이 오셨으면 좋겠습니다.
도커 파일을 사용할 줄 알게되면 Docker-compose도 찾게 될 것입니다. 다음에는 도커 컴포즈로 찾아오겠습니다
읽어주셔서 감사합니다.