## 들어가기
Docker를 사용하다보면, 컨테이너 안 bash를 실행해서 추가 작업을 할 일이 생긴다. 공부나 토이 프로젝트 단계에서는 그냥 한 번 bash 켜서 코드치면 그만이지만, 계속해서 유지 보수를 해야 하는 실제 업무에서는 이런 방식은 극히 비효율적이다. Docker 답게 추가적인 작업 레이어를 이미지에 추가해서 자동으로 실행되도록 해야 한다.
>**경험상 아래 경우는 커스텀 이미지가 확실히 편한 거 같다**
>- API KEY 같은 접속 정보를 환경 변수로 설정하는 경우
>- 회사 내부 패키지를 특정 순서에 따라 설치해야 하는 경우
>- 포트 변경, 포트 공개 등 포트 설정을 손대야 하는 경우
>- 회사에서 인트라넷을 사용하는 경우
>- 로컬이나 원격 저장소에서 파일을 컨테이너 안으로 복사하는 경우
## 기본 구조
```yaml
#Dockerfile
ARG [인자 이름]=[디폴트 값]
FROM [베이스 이미지]:[태그]
MAINTAINER [이름] <[이메일]>
RUN [이미지 빌드할 때 실행할 명령]
WORKDIR [작업 공간]
COPY [로컬 파일 경로] [붙여넣기할 파일 경로]
ENV [환경 변수 이름] [환경 변수 값]
EXPOSE [노출할 포트]
CMD ["명령을", "공백", "기준으로", ",로 구분"]
```
- [[4. Dockerfile 작성 방법#참고 [Yaml 문법](https //lejewk.github.io/yaml-syntax/)|참고 : Dockerfile 작성 방법]]
```bash
docker build [Dockerfile 경로] --tag [이미지 이름]:[태그]
```
## 예시
![[B. Airflow 커스텀 이미지 만들기#Airflow 커스텀 이미지]]