'데이터 엔지니어'로 성장하기

정리하는 걸 좋아하고, 남이 읽으면 더 좋아함

기타/K8S

Slipp) K8S 스터디2주차_컨테이너의 개념 :: mightytedkim

MightyTedKim 2021. 8. 26. 08:58
728x90
반응형

지난 번에는 쿠버네티스가 무엇인지에 대해서 배웠고,

https://mightytedkim.tistory.com/13

 

쿠네버티스) 1장 도커와 쿠버네티스의 개요

회사에서 쿠버네티스를 사용하게 되서, 개념을 공부하고 있어요 책은 15단계로 배우는 도커와 쿠버네티스 (깔끔한 설명과 자연스러운 번역이 장점인 것같아요) slipp스터디에서 9분과 함께 완독

mightytedkim.tistory.com

2장에서는 쿠버네티스와 연관이 많은 도커와 관련된 내용들이 나와요

SLIPP 21차 스터디에서 도커와 관련된 트러블 슈팅 경험등을 공유 했어요

  1.  

0. 토의 내용

책 관련

  1. p132. 컨테이너의 실체는 호스트 프로세스
    1. vagrant 부분에 pts/0,1,2로 나뉘는거같은데, 4420, 4454부분이 pts가 바뀌는게 이해가 안가요
  2. 실습 예제 따라하기 (mac M1)
    1. 도커
    2.  미니쿠베

리눅스

  1. tty와 pts의 차이
  2. 콘솔에서 바로 접근했는지, 원격지에서 했는지 차이인가요?
    1. putty로 접근하면, /dev/pts/10 로 나오는데 일반적으로 우리가 붙을때는 ssh 이용하는거니까 다 이렇게 나오는건가요
    2. "tty가 물리적인 콘솔에서 사람이 직접 조작하는 개념이라면, pty는 telnet 처럼 원격에서 접속하거나X-Window에서 xterm, hanterm 같은 에뮬레이터로 접속할 때 사용하는 접속점의 개념이다"

docker 관련

  1. non-root user로 도커 실행하기
    1. 필요 이유
      1. 기본값은 컨테이너의 root로 실행되는데, 로그나 기타 파일들이 root로 저장되면 사용하기가 쉽지 않음
      2. volume, 로그 파일에 접근하기 위해서, 을 Root 가 아닌 현재 사용자로 생성 필요함
    2. 해결 방법
      1. docker-compose 의 command로 해결
      2. id -u [계정] 로 uid를 보고, usermod xxx 이런식으로 설정가능
        1. image: node:12-slim command: bash -c "usermod -u 1000 node && cd /home/node && su - node -c 'node .'" container_name: c-ds
        2. https://couplewith.tistory.com/entry/Docker%EB%B6%80%ED%84%B0-Kubernetis-%EC%84%A4%EC%B9%98-%EB%8F%84%EC%BB%A4%EC%84%A4%EC%B9%98
  2. 도커 로깅
    1. my-app:
      image: my-app:latest
      logging:
      driver: "json-file"
      options:
      max-file: 5
      max-size: 10m

기타

  1. vagrant랑 xen server랑 비슷한건가요?
    1. 둘다 vm 띄우는 용도라서 비슷한거같음
  2. docker 환경이 실제로 많이 편하나요?
    1. 장애 대처시 당황할 수 있음
    2. 오프라인에 설치하기가 생각보다 힘듦
      1. 리눅스 버전, windows server 2016
    3. 오픈쉬프트 있는 곳도 세팅하기 힘들었음 (AWS 는 편함)

아래는 2장의 내용이에요 ㅎ

1. 컨테이너 첫걸음

요약

  • 가장 기본적인 명령어

설명

  • 명령어
    • docker pull
    • docker run
    • docker ps
    • docker logs
    • docker stop, docker kill
      • 컨테이너의 PID=1인 프로세스 종료
    • docker start
    • docker commit
      • 현재 컨이너의 상태를 이미지로 만들어 리포지토리에 보관
    • docker push
      • 이미지를 원격 리포지토리에 보관
    • 기타
      • 컨테이너느 도커 커맨드에 따라 이미지, 실행, 정지의 세 가지 상태를 이동

2.컨테이너 다루기

요약

  • 대화형 모드로 컨테이너 기동/정지
  • 컨테이너는 호스트의 커널을 공유하는 리눅스 프로세스

설명

  • 명령어
    • docker run -it
    • docker commit [컨테이너명] [이미지명]:[태그]
    • docker run -it --name lucy centos:7 bash
    • docker exec -it lucy bash
  • 로그인 관리하지 않음
    • w 입력해도 아무내용 나오지 않음
      • w : 사용자 로그인 정보와 현재 작업 내용 출력
    • pts/n
    • Unix98 PTYs 를 말합니다. 리눅스 커널 옵션에,/dev/pts file system for Unix98 PTYs 이 부분을 의미하고,파일 시스템입니다. 또한 X-window 에서도 pts/N 입니다. 출처 | https://blog.naver.com/joniel/40003174702
  • 호스트와 컨테이너와의 관계
    • 복수의 터미널에서 실행을 했을 때 TTY가 새로 생김
    • p132 : 이해중인데, 다시 정리해볼게요 <이 부분 추가 설명해주실 분들 있으신가요ㅜ
    • 의도적으로 포트를 열지 않는 이상 호스트의 외부에서 컨테이너에 접속 X

3. 컨테이너 개발

요약

  • 이미지 빌드

설명

  • 이미지 빌드
    • 베이스 > 패키지 설치 > 소스코드 > docker file 정리
    • 컨테이너의 특징
      • 실행환경에 학습할 노력 줄여줌
      • 의존 관계를 컨테이너에 담아줌
      • 관리 부담 줄여줌
      • 지속적 개발/릴리스 쉽게 해줌
      • 이미지를 이용해 여러개의 컨테이너 만들 수 있음
  • best practives for docker files

4. 컨테이너와 네트워크

요약

  • --link 대신 컨테이너 네트워크 사용
  • 기본적으로 bridge 컨테이너 네트워크로 연결

설명

  • 명령어
    • docker network
      • ls, inspect, create, correct, disconnect
    • --network
      • bridge(기본)
      • 전용 네트워크
    • -p (외부에 포트를 공개)
      • 공개포트번호:컨테이너포트번호
    • -d (백그라운드)
    • -e (환경변수)

5. 컨테이너 API

요약

  • API : 블랙박스로 취급해서 다른 프로그램 호출
  • 쿠버네티스는 커네이너를 언제든지 종료할 수 있는 일시적인 존재로 다룸
  • 특히 중요한 것은 환경변수와 종료요청 시그널 처리

설명

  • API 종류
    • 컨테이너 기동
    • 헬스체크(쿠버네티스 환경)
      • 스탭 07 매니페스트와 파드
    • 컨테이너 종료
      • 종료 요청 시그널(SIGTERM)
      • 강제 종료 시글(SIGKILL)
    • 서비스
      • 스탭 09 서비스
    • 로그
      • 표준 출력(STDOUT)
      • 표준 오류(STDERR)
    • 후크(쿠버네티스 환경)
      • 기동하고 종료할 때 컨테이너 내에서 특정 처리 실행
        • 매니페스트에 실행 내용을 기술
        • ex) 쿠버테니스의 롤아웃
      • 스탭 07 매니페스트와 파드
    • 퍼시스턴트 볼륨
      • 설정 파일 + 데이터 보관
    • 종료 상태
      • PID가 1인 프로세스 종료
  • 종료 요청 API
    • docker stop : PID 1인 프로세스에 시그널 sigterm 전달 (10초 기다린 후 강제 종료)
    • docker kill : PID 1인 프로세스가 시그널 sigkill을 받고 강제 종료
  • 퍼시스턴트 볼륨
  • 로그와 백그라운드 기동
    • docker logs -f [컨테이너명]
    • Docker attach --sign-proxy=false [컨테이너명]

 

 

이제 드디어 쿠버네티스를 들어가기 위한 준비가 끝낫어요 ㅎㅎ

다음에는 쿠버네티스 hello word 를 정리해볼게요

728x90
반응형