컨테이너는 이미지 베이스이기 때문에, 첫 컨테이너를 위해 먼저 이미지를 만들도록 하겠습니다.
Dockerfile을 만들어야 합니다. 아래는 하나의 example입니다.
FROM node:14
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "node", "app.mjs" ]
그리고 아래 Dockerfile 이미지를 빌드하는 커맨드를 돌려 봅시다.
docker build .
※ 빌드할 때 에러가 뜨면 Docker가 떠서 돌아가고 있는지 체크해 보세요.
이미지가 하나 만들어졌을 겁니다.
그리고 이미지의 아이디도 있을 거예요.
docker run IMG_ID
이렇게 만들어진 이미지를 돌릴 수 있습니다. (제대로 말하자면 이미지가 아니라 컨테이너를 돌리는 거긴 하지만, 지금은 넘어갑시다.)
그런데 이 이미지는 열어 둔 포트가 있으니 그 포트에 갈 수 있도록 세팅을 해 주어야 합니다.
docker run -p 3000:3000 IMG_ID
-p 옵션(publish)은 호스트 OS에서 컨테이너 포트로 이어질 수 있도록 해 줍니다.
※ 호스트 OS: VM이 있을 때 VM이 만들어진 physical OS를 가리킴. 이때 VM의 OS를 게스트 OS라 함.
docker run -p 80:8000 IMG_ID
위와 같이 되어 있다면 호스트 OS의 80 포트에서 컨테이너의 8000 포트에 갈 수 있는 것이죠.
컨테이너와 호스트 OS 사이에는 디폴트 커넥션이 없다는 것을 잊지 마세요.
docker ps
이 커맨드는 돌아가고 있는 컨테이너 리스트를 보여 줍니다.
랜덤으로 주어진 이름이 보일 거예요.
docker stop CONTAINER_NAME
위 커맨드로 돌아가고 있는 컨테이너를 멈출 수 있어요.