Docker&Container

Docker&Container - 컨테이너 다루기

hminor 2024. 11. 29. 01:08
반응형

컨테이너 다루기

  • 보통 Docker Desktop ui 로는 Docker의 모든 기능을 사용할 수 없기에
  • 터미널에 명령어를 작성하여 사용하는 것이 대부분이라고 함.
    • 우선 이미지 실행은 터미널에 아래의 명령어를 입력하면 됨
      • docker run 이미지명:태그명
    • 다만 이렇게 실행하게 되면 터미널이 점유하게 되어 다른 명령어를 작성할 수 없음
      • 그래서 백그라운드로 실행하도록 하기 위해선 아래와 같이 -d를 추가하기
        • d → detached = 떨어져 있는
      • docker run -d 이미지명:태그명
    • 그리고 서버가 들어있는 이미지는 그냥 실행하면 안되고, 포트를 설정 후 실행해야 함.
      • docker run -d -p 내컴퓨터포트:컨테이너포트 이미지명:태그명
      • 그래서 나는 docker run -d -p 8080:8080 nodeserver:v1 입력하니 정상적으로 서버 접속 완료.
    • 여기서 포트를 설정하는 이유
      • 현재 나의 컴퓨터인 Host안에 가상컴퓨터인 Container(nodesserver)를 실행하고 있는데
      • 나의 컴퓨터인 8080에 접속해도 Container를 찾을 수 없어서 접속할 수 없음.
      • 즉, 클라이언트는 나의 컴퓨터의 8080에 들어온거지, Container의 8080으로 들어온게 아님.
    • 그리고 남의 컴퓨터로 접속을 하는 방법은?
      • 웹 브라우저 창을 열고 타인의 컴퓨터IP 주소를 입력하고 포트 번호를 입력하면 됨.
    • 내가 내 컴퓨터로 접속하는 방법은?
  • Docker 명령어
    • 실행중인 컨테이너: docer ps
    • 실행중인 컨테이너 로그 출력: docker logs 컨테이너명
      • 이미지명이 아닌 name을 작성
    • 실행중인 컨테이너 접속: docker exec -it 컨테이너명 sh
      • exec → execute(실행하다)
      • 이후 ls나 cd 명령어 들을 실행할 수 있고
      • 탈출하고 싶다면 ctrl+p → ctrl+q 순서대로 입력
    • 실행중인 컨테이너 일시정지: docker stop 컨테이너명
    • 정지된 컨테이너 삭제: docker rm 컨테이너명
    • 실행중인 컨테이너 삭제: docker rm -f 컨테이너명
    • 환경변수 추가: docker run -e 환경변수이름=’값’
  • Docker와 Container 실체
    • Docker란
      • LinuxOS의 기능을 활용한 것으로
      • namespace 기능을 사용하면, 프로그램 간 영향을 미치지 않도록 독립적으로 분리해줌
      • 그리고 control group을 사용하면, 프로그램마다 CPU, RAM 사용량을 별도로 할당 가능
      • union filesystem 과 같은 것들이 있는데
      • 이러한 것을 합치면 가상 컴퓨터를 만들 수 있으며,
      • 가상 컴퓨터 안에서 프로그램을 독립적으로 실행할 수 있음(컨테이너)
    • 그래서 runc를 구현하기 쉽게 나온게
    • containerd이고 이를 더 쉽게 사용하게 나온게 Docker