목차

  • Docker 3강 (1~2)
  • Docker 특강
  • Python-tuple

Docker 3강 (1~2)

강의를 듣기 전에 도커, CI/CD, Ubuntu 등이 뭔지 모르겟어서 인터넷 검색으로 알아보았습니다.

  • docker란?
    • 도커 파일 (Dockerfile)(붕어빵 기계 설계도)
      • 정의: 도커 이미지를 빌드하기 위한 파일.
      • 내용: 빌드: 파일 실행 종류, 프로그램 종류, OS종류 정의 등이 들어간다.
      • 목적: 이미지 생성 과정 자동화.
      • 예: 어떤 운영체제를 사용할지, 애플리케이션 코드 및 라이브러리를 어떻게 추가할지 정의.
    • 도커 이미지 (Docker Image)(붕어빵 기계인데 레시피, 재료를 자동으로 넣어주는 기계)
      • 정의: 애플리케이션 실행에 필요한 모든 것을 포함한 읽기 전용 템플릿.
      • 목적: 컨테이너 실행의 기반 제공.
      • 특징: 불변성, 계층적 구조.
    • 도커 컨테이너 (Docker Container)(붕어빵)
      • 정의: 도커 이미지를 실행한 동작 중인 인스턴스.
      • 목적: 애플리케이션을 고립된 환경에서 실행.
      • 특징: 가벼운 프로세스, 독립 실행 환경.
  • 도커 사용 전체 흐름
    • 앱을 정의한 main코드를 개발자가 수정 후 push => CI파일이 Github Actions에서 코드 체크아웃하여 정의된 도커 파일을 불러와 새로운 가상환경에서 도커 이미지를 생성 =(성공)> 도커 이미지가 생성 되면 수정된 코드가 포함된 도커 이미지를 레지스트리(Docker Hub, AWS ECR 등)에 업로드 => CD파일에서 정의된 대로 도커 이미지를 가져와서 컨테이너로 실행 및 배포
      • 테스트가 성공하면 수동으로 main브랜치에 merge한다고 합니다.
      • 레지스트리에 도커 이미지가 업로드 되는 이유는 현재 진행 상황이나 같이 작업하는 사람들과 공유하기 위해 업로드 된다고 합니다.
  • compose
    • 편하게 설정하기: Docker Compose는 여러 컨테이너를 한 파일에 적어서 설정할 수 있어요. 이 파일에는 컨테이너가 무슨 이미지를 쓸지, 어떤 포트를 사용할지, 환경 변수는 뭐가 필요한지 등을 적어둬요. 이렇게 하면 여러 컨테이너를 한 번에 쉽게 설정할 수 있죠.
    • 자동으로 배포하기: 설정 파일이 있으면, Docker Compose가 알아서 컨테이너들을 만들어 주고 실행해 줘요. 개발자가 일일이 명령어를 입력할 필요가 없어요.
    • 의존성 관리: 컨테이너들이 서로 의존하는 관계가 있으면, Docker Compose가 이를 관리해 줘요. 예를 들어, A 컨테이너가 B 컨테이너를 필요로 하면, A를 먼저 켜고 나서 B를 실행하는 식이죠.
    • 모니터링과 로깅: Docker Compose는 컨테이너들이 어떻게 돌아가는지 지켜보고, 로그도 모아줘요. 이렇게 하면 문제가 생겼을 때 빨리 찾아서 고칠 수 있어요.
    • 확장성: 여러 컨테이너를 하나의 그룹으로 관리할 수 있어요. 이게 좋은 이유는, 예를 들어 웹 앱을 만드는 여러 컨테이너를 한꺼번에 관리하고 확장하기 쉽기 때문이에요.
    • 유연성: Docker Compose는 개발 환경, 테스트 환경, 실제 운영 환경에서도 같은 설정 파일을 써서 일관성을 유지할 수 있어요.
    • 보안 강화: 컨테이너들의 네트워크를 분리해서 외부로부터의 접근을 제한할 수도 있어요. 이렇게 하면 보안이 더 강화돼요.
    • 유지보수가 쉬워요: 설정 파일 하나로 컨테이너들을 관리하기 때문에, 뭔가 바꿀 일이 있으면 파일만 수정하면 돼요. 그러면 Docker Compose가 알아서 변경사항을 적용해 줘요.
  • 장점
    • 빠르게 서비스 실행
    • 한 번에 여러 컨테이너 설정
    • 같은 네트워크에서 쉽게 연결
  • 실행
    1. 각 애플리케이션의 Dockerfile 작성하기
      • 보통 내가 만든 애플리케이션을 실행하기 위한 Dockerfile 만 작성
    2. docker-compose.yaml 파일 작성하기
      • 내가 만든 애플리케이션을 실행하기 위해 필요한 database라든지 redis라든지 다른 서비스들을 한꺼번에 정의하는 파일을 작성
    3. docker compose up 으로 실행하기
  • yaml파일 들여쓰기 검사 링크

Docker 특강

특강에서는 docker에 대한 개념과 실습으로 진행 되었습니다.

  • port
    • 80 = http
    • 443 = https
    • 22 = SSH
    • 3360 = MySQL
    • 5432 = PostgreSQL
    • 8888 = MongoDB
  • 실행
    • 메인 파일 생성
    • 도커파일 생성
    • docker buildx build -t flask-app . 빌드로 도커 이미지 생성
    • docker run -d -p 5000:5000 flask-app 컨테이너 실행
    • 주소창에 localhost:5000 으로 접속
  • 정지 및 삭제
    • 실행 중인지 확인 docker ps
    • 컨테이너 정지 docker stop <CONTAINER_ID>
    • 컨테이너 삭제 docker rm <CONTAINER_ID>
    • 도커 이미지 확인 docker images
    • 도커 이미지 중 NONE 파일 삭제 docker image prune
    • 도커 이미지 삭제 docker rmi <image_id>

Python-tuple

  • 튜플이란?
    • 순서가 있어 인덱스로 접근 가능
    • 불변성(immutable)
    • 중복허용
  • 튜플 생성 방법
    • 괄호 사용 number = (1,2,3)
    • 괄호 없이 생성 my_tuple = 1,2,3
    • 단일 요소 튜플 생성 (5, )
    • tuple()함수 사용
  • 인덱싱과 슬라이싱
    • fruits = ('apple', 'banana', 'cherry', 'date')
      • print(fruits[0]) #apple
    • numbers = (0,1,2,3,4,5,6)
      • print(number[2:5]) #(2, 3, 4)
  • 불변, 삭제 불가
  • 추가는 가능
    • my_tiple = (1,2,3)
      • my_tuple += (4,)
  • 메서드
    • count
    • index
    • 튜플과 리스트의 차이점
    특징튜플리스트
    기호 ()또는 생략 []
    변경 가능성 불변 변경 가능
    요소추가/삭제 불가능 가능
    사용사례 변경이 불필요한 데이터, 키로 사용 데이터 조작이 필요한 경우
    • 튜플은 좌표나 날자 등 순서가 중요한 데이터에 자주 사용
    • 튜플끼리 비교 가능 결과 값은 bool
    • 데이터 베이스에서 레코드를 표현할 때 유용
    • 네임드 튜플은 튜플에 이름을 부여해 코드의 가독성을 높인다.

+ Recent posts