내 잡다한 노트
Dockerfile 만들기 본문
네트워크 실습에서 Dockerfile로 이미지를 빌드하는 것을 해야한다.
그래서 관련 내용을 정리해서 포스팅하려한다. 금방 까먹을 것 같다.
Dockerfile
Docker 이미지를 빌드하기 위한 설정파일. 즉, 이미지를 만드는 스크립트(설정파일)이다.
여러가지 명령어를 토대로 Dockerfile을 작성한 후 빌드하면 나열된 명령문을 차례대로 수행하여 이미지를 생성한다.
장점에 대해 찾아보니...
- 장점
1. 이미지가 어떻게 만들어졌는지를 기록한다.
개발자라면 이미지가 설치 되기 위한 과정은 어떤지, 중간에 어떤 과정을 수정해야하는지를 알아야 하는 경우가 있다.
2. 배포에 용이하다.
이미지는 몇 기가씩 할 수 있는데 그걸 배포하기보다는 그 이미지를 만들 수 있는 Dockerfile만 배포한다면
매우 편리할 것이다.
- Dockerfile 작성 및 명령
Dockerfile을 작성할 땐 실제 파일의 이름을 Dockerfile 이라는 정해진 이름으로 해야한다.
FROM : 베이스 이미지
어떤 이미지에서 시작할건지를 의미함.
LABEL : 이미지에 메타데이터를 추가
RUN : 이미지를 빌드하는 과정에서 실행될 명령어를 지정한다.
RUN명령을 실행할 때마다 레이어가 생성되고 캐시된다.
따라서 RUN 명령을 따로 실행하면 apt-get update는 다시 실행되지 않아서 최신 패키지를 설치할 수 없으니
RUN 명령 하나에 apt-get update와 install을 함께 실행해야 한다.
WORKDIR : 작업 디렉토리를 지정함.
EXPOSE : 도커파일의 빌드로 생성된 이미지에서 열어줄 포트.
컨테이너 생성할때 -p 의 컨테이너 포트 값으로 EXPOSE 를 지정해야 함.
USER : 이미지를 어떤 계정에서 실행하는지 지정
보통 root 에서 한다고 함.
COPY or ADD : 호스트의 파일이나 폴더를 이미지에 가져오는 것
ADD가 권한이 더 세서 압축 파일이나 네트워크 상의 파일도 사용할 수 있다고 한다.
일반적인 파일에는 COPY를 쓰자.
ENV : 이미지에서 사용할 환경 변수 값을 지정.
CMD / ENTRYPOINT : 컨테이너를 생성 및 실행 할 때 실행할 명령어
보통 컨테이너 내부에서 항상 돌아가야하는 서버를 띄울 때 사용한다고 함.
CMD는 컨테이너를 생성할 때만 실행된다. (docker run)
ENTRYPOINT는 컨테이너를 시작할 때마다 실행된다. (docker start)
명령어 형식은 둘 다 ["<커맨드>", "<파라미터1>", "<파라미터2>"] 을 사용함.
다른 형식도 있긴한데 둘 다 쓰이는 공통적인것으로 외우는게 편할것같다.
- 생성한 Dockerfile을 이미지로 빌드
이미지 빌드 명령어는 docker build -t 이미지 이름:이미지 버전
이렇게 하면된다.
'DevOps > docker' 카테고리의 다른 글
docker swarm 실습 (0) | 2024.06.08 |
---|---|
도커 네트워크에 대해 간단히 알아보기 (0) | 2023.11.09 |
port mapping과 volume mapping이 필요한 이유 (0) | 2023.09.15 |
docker 핵심 단어 정리, 명령어 정리 (0) | 2023.09.15 |
docker, 도커를 쓰는 이유 (1) | 2023.09.14 |