DevOps/Docker

👉 Docker demon 백그라운드에서 계속 대기(실행)하고 있다가, REST API 요청(명령어)을 처리하는 프로그램 ( 클라이언트, 서버 구조 ) Docker는 이를 이용해, 모든 컨테이너를 관리한다. ( 꺼져있으면 컨테이너 관리 불가 ) 1. 컨테이너 이미지 가져옴 2. 컨테이너 만드는 프로세스를 runc로 넘긴다? 3. 👉 Podman Docker와 유사한 컨테이너 관리 프로그램 도커와는 다르게, demon을 사용하지 않는다. ( 단일 프로세스 구조 ) 새로운 프로그램을 실행하는 것이 아니라, 기존에 존재하는 Systemd라는 백그라운드 프로그램에서 컨테이너를 관리한다. - 기존 컨테이너에 대한 제어장치와 새 컨테이너 생성 - 모든 사용자권한으로 컨테이너를 관리할 수 있다. ( 관리자 권한 필요..
1. 오토 스케일링 이미지로 컨테이너 생성 부하가 많으면 컨테이너 추가 생성 부하가 다시 적어지면 컨테이너 삭제 ( 레플리카 - 복사된 컨테이너 ) 2. 스케줄링 컨테이너를 생성할 기기(노드)를 효율적으로 지정 ex) 디스크 I/O가 많은 컨테이너 => 디스크가 SSD인 노드에 배치 ex) 클라우드 플랫폼의 가용영역 감지 => 원하는 가용영역에 배치 3. 리소스 관리 스케줄링을 하지 않은 컨테이너 자동관리 노드의 CPU, 메모리 여유 등의 리소스 상태에 따라, 컨테이너를 효율적으로 배치 리소스 상태에 따라, 새로운 노드 추가 삭제 4. 자동 복구 컨테이너 프로세스 감시 ( 모니터링 ) ( HTTP/TCP, 쉘 스크립트로도 컨테이너 상태 감시 가능 ) 컨테이너가 종료되면, 자동으로 재배포 ( 노드에 장애가..
👉 minikube란? 로컬 쿠버네티스를 쉽게 개발할 수 있게 해주는 도구 ( 로컬 - 하나의 기기에서 구성된 클러스터 ) minikube 설치 minikube start minikube is local Kubernetes minikube.sigs.k8s.io 👉 클러스터 사용 클러스터 만들기 minikube start 클러스터 가져오기 kubectl get po -A kubectl 다운 minikube kubectl -- get po -A 쉘 명령어 단축 alias kubectl="minikube kubectl --" 클러스터 대시보드 사용 ( 웹 도구 ) minikube dashboard 👉 애플리케이션 배포 Deployment 생성, NodePort로 외부 노출 kubectl create deplo..
👉 Swarm 이란? Docker 컨테이너 관리 도구 ( 쿠버네티스 같은 것 ) 초기화 docker swarm init 도커 서비스 실행 docker service create --name demo alpine:latest ping 8.8.8.8 실행중인 서비스 확인 docker service ps demo 서비스 로그 확인 docker service logs demo 서비스 종료 docker service rm demo
👉 이미지 파일 취약점 검사 이미지 파일에 포함된 모듈의 취약점을 검사해준다. ( Snyk ) Snyk 가입, 로그인 docker scan --login 이미지 파일 검사 docker scan 👉 이미지 파일 히스토리 검사 도커 이미지파일이 만드는 컨테이너 정보 확인 docker image history # --no-trunc : 전체 내용 보기 👉 이미지 캐싱이란? docker는, 기존의 이미지를 업데이트 하고 싶을때 변경사항이 없는 부분은 제외하고 업데이트 한다. 이를 이용하여, 빌드시간을 눈에 띄게 줄일 수 있다. ( package.json 종속성 패키지를 다시 설치할 필요없도록 만들기. ) 기존 도커파일 FROM node:12-alpine RUN apk add --no-cache python2 g..
👉 컨테이너 네트워킹 서로 다른 컨테이너끼리 통신할 수 있도록하는 기능 네트워크 만들기 ( 통신 창구 ) docker network create 컨테이너와 연결하기 docker network connect # --alias : 컨테이너에 별칭 붙이기 ( 네트워크가 구분함 ) # --driver-opt : 개발자 옵션 # --ip : 컨테이너에게 ip 할당 🚩 네트워크 연결해 컨테이너 생성 ( MySQL ) 1. Linux docker run -d \ --network todo-app --network-alias mysql \ -v todo-mysql-data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=secret \ -e MYSQL_DATABASE=todos \ mysql:5..
👉 볼륨이란? ( Volume ) 컨테이너의 특정 폴더를, 호스트 시스템(OS)에 연결해, 컨테이너가 삭제되더라도, 데이터를 유지할 수 있도록하는 것 ( docker가 자동으로 host 경로 설정 ) 특징 컨테이너에서 host 폴더에 파일을 쓸 수 있다. 볼륨 만들기 docker volumn create 볼륨 연결된 컨테이너 만들기 # 연결할 경로는, docker 컨테이너 속 경로기준이다. docker run -dp 3000:3000 -v : 볼륨 정보 확인하기 docker volume inspect todo-db [ { "CreatedAt": "2022-07-11T10:47:03Z", "Driver": "local", "Labels": {}, # 실제로 파일이 저장된 OS경로 ( docker VM의 경..
👉 Compose 란? Docker 컨테이너의 설계도 ( YAML 파일 ) ( 명령으로 컨테이너 무제한 생성 ㅋㅋ ) 👉 작성하기 만들고 싶은 컨테이너 ( 2개 ) docker run -dp 3000:3000 \ -w /app -v "$(pwd):/app" \ --network todo-app \ -e MYSQL_HOST=mysql \ -e MYSQL_USER=root \ -e MYSQL_PASSWORD=secret \ -e MYSQL_DB=todos \ node:12-alpine \ sh -c "apk add --no-cache python2 g++ make && yarn install && yarn run dev" docker run -d \ --network todo-app --network-ali..
하이퍼 바이저란? [가상환경] 하이퍼바이저란? 하이퍼바이저란? 가상 머신 (Virtual Machine, VM)을 생성, 실행하는 프로그램 하이퍼바이저 기능 하이퍼바이저 운영체제와 여러가지 자원을 분리해, VM을 만든다. ( 자원 : CPU, 메모리, 스토리지 등 ) defineall.tistory.com Bins/Libs란? [컴퓨터 기초] BIns(바이너리), Libs(라이브러리) 란? 바이너리란? 이진 파일과 같은 말로, 0과 1로 이루어져 컴퓨터가 알아볼수 있는 파일 라이브러리란? 프로그램이 사용하는 비휘발성(임의로 삭제하지 않을때까지 사라지지 않음) 자원의 모임 ( 문 defineall.tistory.com
MOONCO
'DevOps/Docker' 카테고리의 글 목록