Dokcerfile 는 Docker 에서 사용하기 위한 이미지 를 만들기 위한 일종의 설정 파일입니다.
해당 Dokcerfile 을 통해 본인만 특별한 이미지를 만들어 배포할수도 있습니다. 또는 다른 사람이 작성한 Dokcerfile 을 분석하여 해당 이미지 가 어떻게 구축이 되는지 확인도 가능합니다.
Dockerfile 을 작성하는 방법은 일종의 리눅스 시스템 과 동일합니다. 위에서 부터 아래로 차례대로 입력한 내용이 실행이 되면서 이미지가 만들어 집니다.
Dockerfile 작성
Dockerfile 을 작성하기에 앞서 몇가지 알아두어야 할것이 있습니다. Dockerfile 을 작성할때에는 Docker 에서 정해준 특정 명령어 들로만 구성을 해야합니다. 리스트는 다음과 같습니다.
- FROM : 베이스 이미지
- 제일 처음 입력해야 하며 어떠한 이미지를 베이스로 만들 것 인지 결정합니다.
- EX) FROM ubuntu:20.04
- ENV : 환경 변수 값을 지정하기 위한 명령어 입니다. 값을 지정하기 위해서 [key]="[value]" 의 형태를 따릅니다.
- 해당 환경 변수는 Docker 내부에서만 동작하는 환경변수로 호스트컴퓨터 에는 영향을 주지 않습니다.
- EX) ENV TARGET="google.com"
- WORDIR : 컨테이너 이미지 파일 시스템에 디렉터리를 만들고 해당 디렉터리를 작업 디렉터리로 지정하는 명령어 입니다.
- 컨테이너 내부에 폴더를 생성하는 명령어
- EX) WORDIR /example
- COPY : 로컬 파일 시스템의 파일 혹은 디렉터리를 컨테이너 이미지로 복사하는 명렁어로 [원본경로] [복사경로] 의 형태를 띄게 됩니다.
- EX) app.js .
- 로컬의 app.js 를 컨테이너 내부의 root 디렉토리에 복사합니다.
- EXPOSE : Dockerfile 의 빌드로 생성된 이미지에 열어줄 포트를 의미합니다.
- EXPOSE : 80
- 해당 이미지로 만든 컨테이너 생성시 -p 옵션을 통해 포트를 포워딩 해줘야 합니다.
- CMD : 도커가 이미지로 부터 컨테이너를 실행했을때 실행할 명령어를 지정합니다.
- EX) ["node","app.js"]
- app.js 를 노드로 실행합니다.
- RUN : 새로운 레이어에서 명령어를 실행합니다. 해당 RUN 명령어를 실행할때마다 레이어가 생성되면서 캐시에 저장됩니다. 즉 다시사용할수도 있습니다.
- EX) RUN apt-get install
- 대표적으로 우분투 에서 시스템 설치시 사용하게 됩니다.
아래 링크는 Dockerfile 작성을 위한 레퍼런스 문서입니다.
https://docs.docker.com/engine/reference/builder/
Dockerfile reference
docs.docker.com
우분투 Dockfile 작성
# ubuntu 를 베이스 이미지로 지정
FROM ubuntu:latest
# 사용자 계정 jdh 추가
RUN useradd -ms /bin/bash jdh
# 작업 디렉토리를 /home/jdh로 설정합니다.
WORKDIR /home/jdh
# 이후 명령어를 실행할 때에는 jdh 계정으로 진행
USER jdh
# 필요한 패키지를 설치
RUN sudo apt-get update
RUN sudo apt-get install -y net-tools
# 컨테이너가 시작될 때 실행될 명령어를 지정합니다.
CMD ["/bin/bash"]
마치며
이렇게 만든 이미지를 docker build 하여 이미지를 만든 이후 컨테이너 를 만들어 재사용이 가능합니다.
'환경' 카테고리의 다른 글
Docker 의 Healthcheck 체크 (0) | 2023.08.03 |
---|---|
Docker 컨테이너 간 통신 원리 (0) | 2023.08.01 |
Windows OS 에 Docker 설치 방법 (0) | 2023.07.15 |
Docker 란 무엇인가? (0) | 2023.01.29 |
Docker 명령어 정리 (0) | 2023.01.29 |