[인프런] Docker와 최신 서버 기술 3

타키탸키·2022년 6월 30일
0

서버

목록 보기
3/3
  • docker 설치를 위한 https 관련 패키지
    • docker 레포지토리 접근을 위한 GPG key 설정에 필요
    • GPG key
      • 공인인증서와 유사한 개념
      • 암호화 프로토콜
  • docker 레포지토리 등록
    • docker용 서버에서 docker 다운로드
    • 해당 프로그램의 서버 위치를 등록하는 과정
    • apt 패키지와 별도
      • 등록한 docker 레포지토리까지 포함하여 패키지 리스트 업데이트
  • docker 실행 중임을 확인
    • sudo systemctl status docker
    • systemctl
      • 항상 실행되는 데몬과 같은 프로그램을 실행/관리
  • docker 버전 확인
    • docker -v
  • sudo 명령 없이 docker 명령어 사용하는 설정
    • 현 사용자 ID(ubuntu)를 docker 그룹에 포함
  • docker-compose
    • 여러 개의 docker 사용 시 필요

  • docker
    • 리눅스 컨테이너(LXC, LinuX Containers)부터 시작
    • chroot
      • 별도의 컴퓨터(리눅스) 생성
    • 커널 위에서 리눅스 시스템을 돌린다
  • 서버/클라이언트 구조
    • 서버
      • docker deamon process
      • 항시 떠 있는 상태
    • 클라이언트
      • docker command
      • 내부적으로 Rest API 사용
  • docker image
    • docker로 프로그램을 실행시키기 위해서 필요한 명령(script)들의 템플릿
    • 여러 layer
    • 공식 image는 다운로드하여 사용 가능
  • docker container
    • docker image(정적 파일)가 실행된 상태(instance)
      • 리눅스 컨테이너 형태
    • exe(실행 파일)를 여러 개 실행하는 것처럼 하나의 image에 대해 여러 container 생성 가능

  • docker image를 위한 명령과 docker container를 위한 명령이 따로 존재
    • 명령어 앞에 image/container를 붙이는게 관례
    • 붙이지 않아도 동작에는 이상이 없다
      • 서로 다른 명령어를 가지고 있기 때문
  • Docker Hub
    • https://hub.docker.com
    • 공식 docker 이미지를 다운받을 수 있는 사이트
  • docker 로그인
    • 데몬 프로그램이므로 한번만 로그인 해도 로그인 상태 지속 가능
  • docker search
    • 다운받을 이미지 검색
    • star 수와 offical 옵션 확인
    • --limit 옵션: 출력 결과 수 조정
    • 태그
      • Docker Hub에서 확인 가능
      • 이미지명과 함께 작성
      • ex:) ubuntu 버전
      • latest: 최신 버전(:) 다운로드
      • 태그 생략 가능

  • docker image ls -q
    • image ID만 추출
    • 명령어와 함께 사용 가능
  • image 삭제
    • docker rmi = docker image rm
    • image 이름과 태그 혹은 image ID를 인자로 넣는다
  • 전체 컨테이너 확인
    • docker ps -a
    • 실행 여부와 상관 없이 전체 컨테이너 출력
  • container ID
    • 동일한 image에서 생성하더라도 각각 다른 container ID를 갖는다
    • ID만 출력
      • docker ps -a -q
    • 컨테이너 이름으로도 구분 가능하다
  • 컨테이너 실행 상태
    • status
    • created: 생성
    • up: 실행 중
    • pause: 중지
    • existed: 종료
  • command
    • docker는 운영체제가 아닌 프로그램을 감싼다(실행한다)
    • 프로그램에서 사용할 명령어를 정의해야 한다
    • /bin/bash: 쉘 실행
  • 컨테이너 삭제는 rm

  • start
    • 실행하자마자 바로 중단
    • docker는 시스템 실행이 아닌 시스템 상의 프로그램을 실행
    • 따라서, 실행된 프로그램이 종료되면 docker도 종료
    • shell은 표준 입력(STDIN)으로 받을 수 있는 상태일 때만 대기
    • ubuntu container를 실행만해서는 이러한 입력을 받을 수 없는 상태이므로 바로 종료되는 것
  • 표준 스트림
    • 리눅스에서 동작하는 프로그램은 실행 시, 세 개의 스트림이 오픈됨
    • 터미널 오픈 >> 스트림 연결 >> bash 실행
      • 스트림이 bash에 상속
      • shell에서 입력, 출력, 에러 확인 가능
  • fork()
    • 시스템콜
    • 새로운 프로세스 실행
    • 모든 유닉스 계열 부팅 시, 하나의 프로세스를 운영체제 상에서 실행
    • 그 후 생성된 프로그램(자식)은 처음 프로그램(부모)을 상속하여 실행 가능
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글