- Docker 파일은 <명령> <매개변수> 형식으로 작성한다.
- #은 주석
- 명령은 대소문자를 구분하지는 않지만 보통 대문자로 작성한다.
- Docker는 Dockerfile에 작성된 명령을 순서대로 처리한다.
- Dockerfile에서 명령은 항상 FROM으로 시작해야 한다.
- FROM 이 없거나, FROM 앞에 다른 명령이 있으면 이미지가 생성되지 않는다.
- 각 명령은 독립적으로 실행 된다.
- 예를 들면 cd로 디렉토리를 이동하더라도 뒤에 있는 명령에는 영향을 주지 않는다.
1. dockerignore
- Dockerfiile과 같은 디렉토리에 들어있는 모든 파일을 context라고 한다. 특히 이미지를 생성할 때 컨텍스트를 모두 Docker 데몬에 전송하므로 필요없는 파일이 포함되지 않도록 주의한다.
2. FROM
- FROM 은 어떤 이미지를 기반으로 이미지를 생성할 지 설정한다. Dockerfile로 이미지를 생성할 때는 항상 기존에 있는 이미지를 기반으로 생성하기 때문에 FROM 은 반드시 설정해야 한다.
- 이미지 이름을 설정하거나 이미지 이름과 함께 태그를 설정할 수도 있다. 이미지 이름만 설정하면 latest를 사용한다. 또한 이미지 이름은 생략할 수 없다.
3. RUN
- RUN은 FROM 에서 설정한 이미지 위에서 스크립트 혹은 명령을 실행한다. 여기서 RUN으로 실행한 결과가 새 이미지로 생성되고, 실행내역은 이미지의 히스토리에 기록된다.
- RUN <명령> 형식이며 셸 스크립트 구문을 사용할 수 있다 .FROM으로 설정한 이미지에 포함된 /bin./sh 실행파일을 사용하게 되며, 해당 파일이 없으면 사용할 수 없다.
4. ENTRYPOINT
- ENTRYPOINT 는 컨테이너가 시작되었을 때 스크립트 혹은 명령을 실행한다.
- 즉 docker run 명령으로 컨테이너를 생성하거나, 정지된 컨테이너를 docker start 명령으로 시작할 때 실행된다.
- ENTRYPOINT는 Dockerfile에서 단 한번만 사용할 수 있다.
5. ENV
- ENV는 환경변수를 설정한다. ENV로 설정한 환경변수는 RUN, CMD, ENTRYPOINT에 적용된다.
6. COPY
- COPY는 파일을 이미지에 추가한다. ADD와는 달리 COPY는 압축파일을 추가할 때 압축을 해제하지 않고 파일 URL을 사용할 수 없다.
- COPY <복사할 파일 경로> <이미지에서 파일이 위치할 경로> 형식이다.
- <복사할 파일 경로> 는 컨텍스트 아래를 기준으로 하며 컨텍스트 바깥의 파일, 디렉터리는 사용할 수 없고 절대경로의 사용도 불가능하다.
- <복사할 파일 경로> 는 파일뿐만 아니라 디렉터리도 설정할 수 있으며, 디렉터리를 지정하면 디렉터리의 모든 파일을 복사한다. 또한 와일드카드를 이용해서 특정파일만 복사할 수 도 있다.
7. ARG
- ARG 명령문은 docker build 커맨드로 이미지를 빌드 시, —build -arg 옵션을 통해 넘길 수 있는 인자를 정의하기 위해 사용한다.
'Docker' 카테고리의 다른 글
맥북 M1 docker Desktop 설치 및 nginx 컨테이너 실행해서 웹 서버 만들기 (0) | 2022.05.11 |
---|