본문 바로가기
DevOps/Docker

컨테이너 만들어 보기

by 민우's 코딩 2024. 1. 14.

 

간단한 NodeJS 코드

여기 NodeJS로 간단히 코드를 작성 해보았다. 원래 이 코드를 실행하기 위해선 NodeJS를 다운받고 실행해야한다.

하지만 도커를 사용하여 이 코드를 컨테이너에서 실행해보려한다. 

 

컨테이너를 항상 이미지를 기반으로 하기에 먼저 이미지를 생성해야한다.

Dockerfile

우리는 이미지를 생성하기위해 Dockerfile이라는 확장자 없는 도커파일을 생성했다.

 

아직은 자세히 하나 하나 모르겠지만 종합하면, 이 Dockerfile은 Node.js 애플리케이션을 실행하기 위한 환경을 구성하고 필요한 종속성을 설치한 뒤, 해당 애플리케이션을 실행하는 데 필요한 설정을 제공한다.

 

 

이제 통합 터미널을 열어 Docker build . 이라는 커맨드를 입력해서 Dockerfile 이미지를 빌드한다.

 

주의사항

1. Docker Desktop이 실행되어 있는지

2. package.json 파일과 Dockerfile이 같은 위치에 속하는지

 

이 두가지를 안 지켰다가 몇 번 에러가 나서 당황했다.

 

그렇게 이미지가 만들어지면 이미지 ID를 얻게 된다.

 

이미지 ID

이제 이 ID를 사용하여 docker run -p 3000:3000 (id) 를 입력하여 컨테이너를 실행 시킨다.

 

-p를 붙히는 이유는 아까 이미지 파일에서 expose 3000를 하여 컨테이너에서 3000번 포트를 외부에 노출 시켰지만 외부에서 접속 가능하기위해 해당 포트를 publish 하기 위해서 붙힌다.

그렇기에 포트 3000에 3000을 게시한다는 의미이다. 

 

위 명령어를 작성하면 더이상 터미널에 명령이 입력 불가하고 컨테이너가 실행 되는데

localhost:3000을 방문해본다면

도커화된 웹을 볼 수 있다. 

 

원래 이 NodeJS 코드를 실행 시키기 위해 npm install을 실행해야 했는데 우리는 실행시키지않고 웹 서버를 불러왔다.

 

 

 

컨테이너를 중지하기 위해 새로운 터미널을 열어 'docker ps' 입력 후

내가 실행한 컨테이너의 name을 찾아 'docker stop (ID)'를 터미널에 입력하면 컨테이너가 중지 되어

더이상 localhost:3000에 연결 할 수 없게 된다.