Docker

[Docker] image 생성 및 컨테이너 실행

sol-hee 2022. 5. 2. 21:30

Build image Using Dockerfile

docker build .

docker build <docker file path> : dockerfile을 기반으로 새 커스텀 이미지를 빌드하도록 도커에게 지시
<docker file path> : . 일 경우는 터미널 실행 경로와 dockerfile이 같은 폴더에 있음을 나타냄

image 는 읽기전용 스냅샷이다.

image 를 한번 빌드한 이후 소스 코드를 변경하여도 이전 build할 시점의 코드가 반영됨.

Starting Container

마지막 떨어진 image id를 사용하여 컨테이너 실행

docker run <image_name>

Expose Port

그런데 Dockerfile에 EXPOSE 80으로 80 번 port를 노출하였음에도 불구하고, localhost 80번으로 들어가면 아무것도 표시가 되지 않는다.
docker ps로 실행 중인 컨테이너를 확인해보면, 잘 작동하고 있는 것을 볼 수 있다.
사실 Dockerfile의 EXPOSE <port>는 명령어라기 보다 Documentation에 가깝다. 주석 같은 느낌..? 이러한 이유로 EXPOSE 기입 여부에 따라 컨테이너 내 포트 접근 여부가 달라지지 않는다.

포트에 접근하기 위해선 다음과 같이 로컬포트와 노출된 내부 컨테이너 포트를 연결해준다.

docker run -p <localport>:<containerport> <image_name> #publish

전체 ID를 적을 필요는 없다.

docker run abcdefg

만약 abc까지 겹치는 image id가 없다면

docker run abc

만 입력하여도 실행이 된다.