학습주제
학습내용
프로세스에 대해 살펴보자.
하이레벨로 설명.
대상이 되는 소프트웨어 선택
각기 개별 프로세스로 돌아야 한다면 그 수 만큼 컨테이너로 돌려야 함. 각각이 이미지.
묶어서 하나의 컨테이너로 돌리고 싶다면 거기에 맞게 이미지는 하나만
소프트웨어들이 하나의 이미지 하나의 컨테이너로 돌아간다고 가정.
도커라이제이션 - 도커로 만든다 이미지를 빌드한다.
도커이지미로 빌드할까?
이걸 도커 파일이라고 부름.
오픈소스 소프트웨어를 깃헙에서 클론해와서 도커파일이 있다면,
그 오픈소스를 하나의 이미지로 만드는 방법이 기술되어있음. 이걸 이용해서
docker build 를 통해 하나의 이미지로 만듦.
태그라고해서 이미지의 이름과 버전을 지정해줌.
도커파일은 텍스트 파일임.
리눅스 운영체제로 시작할 수도 있고, 파이썬 기반일수도있음
보통 앞에 FROM을 맨 앞에 써줌
그 다음에 RUN을 써서 어떤 프로그램들을 설치해줄 건지. apt-get 처럼.
그다음 실행해줘야하는데 ENTRYPOINT CMD를 사용
도커파일엔 세가지 컴포넌트
기본 소프트웨어 FROM
어떤거 설치 RUN
어떻게 실행 ENTRYPOINT CMD 두개 차이 나중에 설명
하나의 도커 컨테이너에서 실행됨.
완전한 패키지.
에어플로우를 하나의 컨테이너 안에 실행하고싶다면 하나의 이미지에 만들게 됨.
도커 파일을 기술할 때 FROM은 파이썬, 어떤 버전쓸지 기록
에어플로우 자체를 설치하고 기타 모듈 파이썬 모듈을 붙일수 있음.
postgres 자체를 설치해주는 명령을 적어줄 수도 있음.
어떻게 셋업, 실행할지 기록해줌.
실행 명령은 간단하지 않다면 쉘 스크립트로 만드는게 일반적.
이런 이미지는 다른 사람도 사용한다고 하면 도커 허브에 업로드하는게 일반적.
권한이 있는 다른 사람도 받아서 사용
FROM - 기본 OS, 파이썬, 에어플로우, 우분투
소프트웨어 자체 (코드)
RUN - 라이브러리 설치
기본 파일 필요하기에 복사해야함.
환경변수: 설치할 때, 나중에 도커 이미지 실제 실행될 때 환경변수 ENV, ARG
메타 데이터: 버전이 무엇, 누가 작성, 설명을 덧붙힘. 기본은 latest
도커 파일을 가지고 빌드를 하면, 내시스템에 있는 이미지들은 docker images ls로 확인 가능
이미지는 파일 하나로 구성된게 아닌 다수의 파일
분리된 컨테이너(프로세스)에서 이미지를 실행시킴.
정해진 파일을 갖고 시작하게 함(볼륨)
docker run으로 실행 주어진 이미지 처음 실행 컨테이너 안에 띄우기
docker exec도 있음 이미 실행된 이미지 실행
다른 사람도 쓸 수 있음.
프로덕션, 테스트 환경에 실행될 수 있음.
레지스트리에 등록
온프레미스처럼 회사 자체 서버에서 공유하거나 허브 있을 수있음
도커 이미지 레지스트리와 깃허브는 유사점이 많음. docker hub 이거가지고 실습 예정
개발자가 이미지를 만들면 등록해서 다른 사람들은 받아서 실행시키면 됨.
깃헙에서 pull 하는것처럼 도커 pull을 함.
내가 업로드 할 땐 docker push를 함.
해당 레지스트리에 계정이 있으면 됨.
깃헙하고 유사함.
이미지들 검색이 가능함.
권한이 있는 Private도 검색이 가능
mysql처럼 굉장히 많이 사용하는 소프트웨어는 공인을 시켜줌.
오거니제이션으로 팀 내부 공유 가능.
깃헙하고 연동해서
자동화 빌드 제공
깃헙에서 리포 만들고 코드변경 생기면 test해서 다 돌았다면 테스트 끝난 소프트웨어를 등록. 이거까지가 하나의 프로세스임.
end-to-end 데모.
도커로 이미지를 만들면 분리된 환경에서 돌릴수 있음.
오버헤드도 적음.
소프트웨어 개발을 끝나면 도커 이미지를 만듦
테스트 환경에서 돌림 - 깃헙과 연동. 소스코드 자체는 깃헙에 있음.
테스트도 돌리고, 도커 이미지 생성 등
아무 문제 없으면 도커 레지스트리에 올림.
서버의 수가 몇개냐. 능력에 따라 클러스터는 쿠버네티스 클러스터를 쓸 수도 있음.