docker 도커를 이용하여 컨테이너(CONTAINER) 생성하기 : NestJS 사용

 안녕하세요. 저번에 이어서 이번에는 컨테이어를 만들어보겠습니다. 컨테이너를 만들기 위해서는 이미지가 필요합니다. 이전글을 참고해 주세요


이전글 : docker 도커를 이용하여 이미지(IMAGE) 생성하기 : NestJS 사용


이제 이전에 만든 이미지를 이용하여 컨테이너를 만들도록 하겠습니다.

$ docker run -p [LOCAL PORT]:[CONTAINER PORT] [IMAGE ID OR REPOSITORY:TAG]


사진1) 이미지를 이용하여 컨테이너 생성

사진1과 같이 해당 터미널을 실행하면 위와 같이 NestJS가 컨테이너로 생성되면서 실행 되는 것을 알수 있습니다.


사진2) Local로 3000포트 접속

 사진2에서 Local의 3000포트에 접속시 컨테이너 안의 NestJS서버와 정상적으로 연결이 됩니다. 그  이유는 Local에서 접속한 포트와 컨테이너에서 노출한 포트가 같기 때문입니다.


사진3) 도커 컨테이너 생성 터미널


 터미널로 도커 컨테이너 생성시 실제 Local에서 접속하는 터미널은 [LOCAL PORT]입니다. 이때 컨테이너 내부에 연결되는 포트는 [CONTAINER PORT]입니다. 위 예제에서 3000:3000으로 연결했기 때문에 3000포트에 연결 됬지만 2500:3000으로 할시 Local에서는 2500포트로 접속해야 해당 컨테이너의 3000포트에 접근할수 있습니다.



다른터미널로 현재 돌아가고 있는 컨테이너 확인하기

$ docker ps


사진4) 현재 돌아가는 컨테이너 리스트

위 터미널을 이용하여 현재 실행되고 있는 컨테이너와 그 정보들을 알수 있습니다. 그런데 이미지와 마찬가지로 NAME을 따로 지정을 할수 있습니다. 현재 컨테이너를 삭제한 후 새로 생성하도록 하겠습니다.


실행하고 있는 컨테이너를 정지하기

$ docker stop [CONTAINER ID OR NAME]


사진5) 도커 정지



Name을 지정한 컨테이너 생성하기

$ docker run -p [LOCAL PORT]:[CONTAINER PORT] --name [CONTAINER NAME] -d [IMAGE ID OR REPOSITORY:TAG]


사진6) 컨테이너에 NAME을 지정해서 생성하기

이렇게 해서 해당 컨테이너를 생성해서 실행할수 있습니다.

그런데 사진1과 6은 차이점이 있습니다. 사진1은 컨테이너를 실행한 다음 해당 터미널을 사용할수 없었는데 사진2는 사용할수가 있습니다. 이는 '-d'때문입니다. 만약 '-d'를 사용하면 컨테이너의 터미널에 접속하는 것이 아닌 다시 Local터미널로 돌아옵니다. 이는 향후 컨테이너 터미널에 데이터를 입출력 할때는 직접 해당 터미널에 접속해야 하기 때문에 '-d'를 사용하지 않습니다.


그리고 해당 컨테이너를 정지하고 다시 시작할려고 할때는 'start'를 사용합니다.

$ docker start [CONTAINER NAME OR ID]



마지막으로 컨테이너 삭제 입니다. 삭제전 해당 컨테이너는 정지되 있어야 합니다.

$ docker rm [CONTAINER NAME OR ID]


사진7) 컨테이너 삭제

해당 컨테이너를 매번 정지하고 삭제하기 힘들면 처음 컨테이너를 생성할때 '--rm'을 추가해서 컨테이너가 정지되면 자동으로 삭제하게 할수 있습니다.


$ docker run -p [LOCAL PORT]:[CONTAINER PORT] --rm [IMAGE ID OR REPOSITORY:TAG]


사진8) 정지시 자동삭제 컨테이너 생성

사진8의 컨테이너를 정지하게 되면 자동 삭제가 진행이 됩니다.




댓글

이 블로그의 인기 게시물

DAQ로 전압 측정하기-2

Nest JS URL에 있는 쿼리(Query) 읽기

appendChild를 이용하여
  • 늘리기_JavaScript_2번