본문 바로가기
Devops/Docker

[Docker] Dockerfile (2)

by 볼링치는 개발자 2021. 6. 11.
반응형

앞서 포스팅에서는 Dockerfile의 기본적인 명령어와 사용법에 대해 포스팅했습니다.

이번 포스팅에서는 좀 더 Dockerfile 명령어에 대해 포스팅하려 합니다.

 

EXPOSE [포트 번호] - 호슽와 연결할 포트 번호를 설정합니다. (docker run의 --expose 옵션과 동일)

ENV [환경 변수] [값] - 환경 변수를 설정합니다. 이 환경 변수는 RUN, CMD, ENTRYPOINT에 적용됩니다.

ADD [복사할 파일 경로] [이미지에 파일이 위치할 경로] - 파일을 이미지에 추가합니다.

COPY [복사할 파일 경로] [이미지에 파일이 위치할 경로] - 파일을 이미지에 추가합니다.

WORKDIR [경로] - RUN, CMD, ENTRYPOINT 명령이 실행될 디렉토리를 설정합니다.

 

COPY명령어의 경우 RUN ["cp"] 로 대체할 수 있지 않을까 라는 생각을 할 수 있습니다.

하지만 RUN명령어는 이미지 layer를 구성할 때 사용합니다.

반면, COPY는 COPY hello.c/root 와 같이 호스트 머신에 있는 hello.c파일을 컨테이너에 놓을 때 사용합니다.


Dockerfile로 apache2 생성해보기

$ vi Dockerfile 명령어로 Dockerfile은 아래와 같이 작성했습니다.

그리고 다음의 명령어들로 Dockerfile을 빌드하고, 실행시켜 줍니다.

$ docker build -t apache2 .
$ docker run -itd -p 8000:80 apache2

EXPOSE 명령어의 경우 호스트와 연결만 하지 외부에 노출이 되지 않아서 실행할 때 -p 옵션을 통해 외부에 노출시켜줍니다.

localhost:8000에 접속해 apache2가 정상적으로 실행되는 것을 확인할 수 있습니다.


Dockerfile로 nginx 생성해보기 

앞서 apache2를 생성해봤는데, 이번에는 Dockerfile로 nginx를 생성해 보겠습니다.

 

Dockerfile을 다음과 같이 수정해줍니다.

그리고 다음의 명령어들로 Dockerfile을 빌드하고, 실행시켜 줍니다.

$ docker build -t my-nginx.
$ docker run -itd -p 9000:80 my-nginx

localhost:9000에 접속하면 다음과 같이 nginx가 잘 실행되는 것을 확인할 수 있습니다.

반응형

'Devops > Docker' 카테고리의 다른 글

[Docker] Docker Compose  (0) 2021.06.11
[Docker] Dockerfile (1)  (0) 2021.06.11
[Docker] Docker 이미지 다루기 (2)  (0) 2021.06.11
[Docker] Docker 이미지 다루기 (1)  (0) 2021.06.11
[Docker] Apache 사용해보기  (0) 2021.06.10

댓글