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의 컨테이너를 정지하게 되면 자동 삭제가 진행이 됩니다.
댓글
댓글 쓰기