선인장777 2023. 11. 3. 20:37

도커란?

  • 물리서버를 논리서버로 분리하여 사용 가능
  • VM은 os를 새로 만드는 것이지만 도커는 os 포함하여 위에 얹는 것
  • 도커는 리눅스 컨테이너에서 왔고, 하나의 프로세스이다.
  • 리눅스 기반이므로 윈도우에서 사용하려면 벌쳐 박스를 설치하고 사용해야함

원리

  • nameSpace
    • 키 벨류 쌍의 딕셔너리 구성되어 있는 것
    • pid(process id) 분리
    • 네트워크 분리
    • UID, MOUNT, UTS, IPC 분리
  • docker0 NIC(Network Interface Controller)
    • 네트워크 분리되며 같이 연결될 수 있음
    • NAT, NAPT : 네트워크 포트와 IP translate

용어

  • image ⇒ 웹서버, db 정의한 config파일 , 빌드와 공유 가능 , 이미지 실행시킨 것이 컨테이너
  • engine ⇒ 실제 운영 담당
  • client ⇒ os, db로 도커를 구분할 수 있으며 도커 바깥쪽을 client, 도커 안쪽을 server
  • Host OS ⇒ 물리 서버에 설치된 OS
  • Machine(Runtime Environment) ⇒ 도커가 실행되는 곳
  • Compose ⇒ 컨테이너는 별도 서버라고 생각, 여러개의 컨테이너를 하나처럼 쓸 수 있게 하는것
  • Registry, Hub, Swarm…

컨테이너

  • 운영체제 위에 컨테이너(프로세스: 연산의 단위)가 올라가는 것
  • 호스트 위에 있다보니, 폴더, 라이브러리, 아이피를 공유
  • vm은 별도의 os까지 들고 올라감
  • 컨테이너는 이미지를 바탕으로 뜬다
  • status
    • up ⇒ 도커가 떠있음(실행중)
    • exit ⇒ 컨테이너 실행하고 처리하고 나옴

명령어

  • docker container run <docker-image-name> <command> : 도커 실행
  • docker ps -a : 모든 컨테이너의 정보
  • docker ps : 현재 실행되는 컨테이너 확인 명령어
  • docker system df : 디스크 사용량
  • docker image ls : 이미지 정보 (=== docker images)
  • docker pull — : 이미지 다운로드
  • docker container run --name webserver -d -p 6080:80 nginx : webserver라는 컨테이너 이름으로 -d(detach옵션 : 백그라운드(뒤에서)로 돌리겠다.) -p(port) 6080(내포트): 80(nginX 포트) nginx(이미지 이름) 6080이 80으로 보게 해라
  • docker container rm webserver : webserver container 제거
  • docer container prune webserver : 멈춰있는 컨테이너는 삭제
  • docker search 이미지명 : 도커 허브에서 이미지 찾음
  • docker container stop 컨테이너명 : 컨테이너 중지
  • exit : 컨테이너 스탑하고 나옴 === kill
  • detach : 컨테이너 띄우고 나옴
  • attach : 떠있는 컨테이너에 다시 들어감
  • stop: 컨테이너 완전히 죽이는 것