ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker 외부 이미지의 사용& 실행
    Infra/컨테이너 2022. 8. 13. 18:17

    Container는 이미지를 기반으로 한다. 실제로 Container를 실행 할 수 있도록 이미지를 생성하고, 가져오는 두가지의 방법이 존재한다.

     

    1.이미 존재하는 이미지를 사용하는 것이다.

    • 동료에 의해 구축된Image(Custom)
    • 일반적이여서 미리 구축된 공식 Image
    • 커뮤니티에서 공유한 Image

    Docker Hub

    도커 허브에서 찾을 수 있는 위와 같은 노드 이미지는 누구나 사용할 수 있으며, NodeJS 공식 팀에서 배포, 생성, 유지, 관리한다.

     

    Docker Hub에서 공식 image run 하기

    docker run node

    위 와 같이 터미널에 명령어를 입력하고 엔터를 누르면 자동으로 도커 허브에서 Image를 가져온다. 이제 도커 허브에서 최신 노드 이미지를 다운로드하고 컴퓨터에 다운로드가 끝나면 자동으로 이미지를 Container가 생성된다.

     

    위 명령어가 끝나고 나면 노드에 관련한 Image가 다운로드 되고 Container가 생성되지만 아직 이 컨테이너는 실제로 작동 되고 있지는 않다. 일단 NodeJS는 단지 소프트웨어 이기 때문이다.

     

    명령을 입력하기 위해 즉 인터렉티브 쉘(shell)을 얻기 위해 노드를 실행할 수 있다. 하지만 기본적으로 Container는 주변 환경과 독립적이고, 컨테이너 내부에서 실행 중인 인터렉티브 쉘(shell)이 있다고 해도 이 shell이 사용자인 우리가 바로 접근 할 수 있도록 Container 외부로 노출되지 않는다.

     

     

    Docker Process 확인하기

    docker ps -a

    위 명령어를 실행하면 위 이미지와 같이 현재 docker를 통해 다운로드 받은 Image를 확인할 수 있다. ps는 process의 약자로 -a 플래그를 사용하면, 도커가 생성한 (all) 모든 프로세스가 표시된다.

     

    *플래그(flag) :  (중요한 정보 옆에)표시를 하다.

     

    위 이미지를 통해 docker에 무언가 프로세스가 흔적을 발견 할 수 있지만 status 값을 통해 실행되지 않고 있다는 것을 확인 할 수 있다. 왜냐하면 컨테이너는 격리되어 독립적으로 실행되기 때문이다.

     

    노드를 이미지로 실행하거나 노드이미지를 기반으로 하는 컨테이너를 실행했지만, 이것만으로는 별 의미가 없다. 노드에 의해 노출된 인터렉티브 쉘(shell)은 Container를 통과해 자동으로 local 컴퓨터 접근 레벨에 노출 되지 않기 때문이다.

     

    하지만 위와 같은 상황은 바꿀 수 있다.

     

     

    Docker Process 실행하기

    docker run -it node

    일단 처음 노드 Image를 다운 받으면서 자동으로 Container를 생성시켜주었던 명령어에서 node 앞에 플래그 -it를 추가한다. 이것은 도커에게 Container 내부에서 hosting 컴퓨터로 대화형 session을 노출하고 싶다고 알리는 것이다.

     

    위 명령어를 적고 엔터를 누르면 실제로 기본 노드 명령을 실행할 수 있는 인터렉티브 노드 터미널에 들어간다. 1+1을 하면 바로 노드 API를 사용한 결과를 얻을 수 있다.

     

    여기서 중요한 점은 노드가 생성된 Container 내부에서 실행 중이며 -it 플래그를 추가 함으로써 터미널로 들어가 Container에서 실행 중인 노드와 상호작용할 수 있다는 것이다. 또 한 위에서 node는 우리 컴퓨터local에서 실행되고있는 것이 아니라는 점이다.

     

    노드 Container를 실행하고, 상호작용하기 위해 local환경에 노드를 설치할 필요가 전혀 없는 것이다. 이것이 바로 Container와 작업하는 방법이다.

     

    docker ps -a

    위 명령어로 다시 한번 현재 실행 중인 process를 확인하면, 2개의 node process를 확인할 수 있는데, 두개의 process의 status모두 현재는 실행중이지 않고 종료되었다.

     

    또한 우리는 위 이미지에서는 docker 동일한 이미지를 기반으로 하는 Container가 2개 존재하는 것을 알 수 있다.  이를 통해서 우리는 여러개의 터미널을 열어 docker run 명령어를 반복함 으로써 동일한 이미지를 기반으로 하는 2개의 Container가 동시에 실행될 수 있음을 알 수 있다.

     

     

     

    [출처 - https://www.udemy.com/share/106b8i3@uC-jrm0KnQjqGWtxFr4Pafx0cHSLajV1UnYtTipExbXTkI2OGPueJXMl7-KCFCk76w==/ ]

     

    'Infra > 컨테이너' 카테고리의 다른 글

    Docker Finding/Creating Images 2  (0) 2022.08.20
    Docker Finding/Creating Images 1  (0) 2022.08.19
    Docker Images & Containers  (0) 2022.08.13
    Virtual Machine vs Docker Container  (0) 2022.07.24
    Docker란?  (0) 2022.07.23

    댓글

Designed by Tistory.