Docker

mizu·2025년 1월 14일

DevOps

목록 보기
7/8
  • 셸 : 운영체제와 사용자 사이에서 다리 역할 bash,zsh
  • 프로그램 : 실행 가능한 명령어의 집합
  • 프로세스 : 실행 중인 프로그램 (램 위에 올라감)
  • 스레드 : 프로세스가 할당받은 자원을 이용하는 실행 단위, 프로세스 내에 실행되는 여러 흐름의 단위
  • 예를 들어 워드 프로그램의 경우, 하나의 스레드는 화면 상에 글자를 보여주는 일, 또 다른 스레드는 사용자의 키 입력에 대응, 또 다른 스레드는 오탈자와 문법을 검색하는 일
  • 네임스페이스 : 프로세스를 실행할 때 시스템 리소스를 분리해서 실행할 수 있도록 도와주는 기능
    📍 pid : 리눅스 커널의 프로세스 ID를 분리

Docker

  • 컨테이너라고 부르는 운영체제 수준의 가상화 방식. 소프트웨어를 배포하는 방식을 사용하는 PaaS 제품.
  • 운영체제 위에 도커가 설치, 도커는 컨테이너 단위로 애플리케이션을 실행, 컨테이너들은 서로 격리되어 있으므로 독립성 보장.
  • 각 컨테이너는 애플리케이션을 실행하는 데 필요한 최소한의 바이너리, 라이브러리를 포함
  • 컨테이너 : 소프트웨어를 배포할 때 필요한 코드, 라이브러리, 환경 설정 파일들을 한데 모아 격리시킨 후 실행가능한 패키지로 만든 것.
  • 격리된 환경에서 작동되므로 서로 충돌하지 않음.
  • 가상화 : 리소스를 추상화하는 개념
  • 하이퍼바이저 : 단일 물리 머신에서 다수의 가상머신을 실행할 때 활용하는 소프트웨어를 의미

=> Linux 환경 상에 Docker를 설치해서 진행했음
=> 이때 한 대만 운영하는 것이 아니었기에, metadata start-script에 도커를 설치하고 이미지가 올라가있는 Artifact Registry와 연결하여 이미지를 pull 해오고 컨테이너를 작동시키는 것까지 작성.

도커 클라이언트에서 명령어를 입력하면 도커 호스트의 도커 데몬이 명령을 받고, 도커 호스트에 이미지가 존재하지 않으면 도커 레지스트리에서 다운로드

  • 도커 데몬 : 도커와 관련된 리소스를 관리하는 백그라운드 프로세스

도커 이미지 : 컨테이너 형태로 소프트웨어를 배포하기 위해 필요한 모든 요소를 실행할 수 있는 포맷으로 컴파일 및 빌드한 패키지

  • 이미지 인덱스 : 다운 받을 때 결과창에 출력되는 digest
  • 이미지 매니페스트 : 설정 파일인 config
  • 레이어 : 각각의 digest

도커 컨테이너 : 도커 이미지를 실행할 수 있는 인스턴스. 도커 이미지로부터 생성되며 도커 컨테이너에 대해 실행, 중지, 재실행 등의 명령을 내림

도커 네트워크 : bridge, host, none

  • bridge : 컨테이너를 생성할 때 제공되는 기본 드라이버
  • host : 컨테이너를 생성할 때 컨테이너 자체적으로 네트워크 인터페이스를 가지지 않고 호스트 네트워크 인터페이스를 공유
  • none : 네트워크 인터페이스를 가지지 않아 컨테이너 외부와의 통신이 불가능한 상태

도커 호스트에서 도커 컨테이너로 파일 보내기
docker container cp [source] [destination container ID:파일 저장 경로]

도커 스토리지

  • 도커 컨테이너에서 생성되는 데이터를 보존하기 위해 사용됨
  • bind mount : 도커 호스트 디렉터리를 직접 공유
    - 호스트의 어떤 디렉토리든 마운트 가능
    - 호스트와 컨테이너 간의 실시간 파일 공유
    - 개발 환경에서 소스 코드 공유시 유용
    - 이식성은 낮음
  • volume : 도커로 활용해 볼륨을 생성한 후 컨테이너의 디렉터리와 공유하는 방식
    - 컨테이너가 삭제되어도 데이터는 보존 됨
    - 여러 컨테이너 간 데이터 공유 가능

여러 컨테이너 연동
네트워크를 만들고, 컨테이너 run할 때 해당 네트워크로 연결하기

포트 설정할 때
<도커 호스트 포트> : <컨테이너 포트>

profile
문제를 해결해보자 ✨

0개의 댓글