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
만 입력하여도 실행이 된다.
'Docker' 카테고리의 다른 글
[Docker] 이미지 캐시, 레이어 (image layer) (0) | 2022.05.12 |
---|---|
[Docker] Dockerfile 을 사용한 image build (0) | 2022.05.01 |
[Docker] image, container (0) | 2022.05.01 |
[Docker] 도커, 컨테이너, Virtual Machine과 차이 (0) | 2022.04.24 |