본문 바로가기

728x90

개발공부/Docker & Kubernetes 실전 가이드 강의

(9)
Udemy : Docker & Kubernetes 실전 가이드 (9) - 1 Docker 컨테이너 배포하기 - 수동 배포 1. 배포 프로세스 & 프로바이더 1) 리모트 서버 설정 2) SSH 연결 3) 로컬 호스트 머신에서 도커 이미지 푸시 4) 리모트 호스트에서 컨테이너 실행 후 웹에 포트 노출 5) 리모트 서버, 머신 찾기 ~ 대표적인 프로바이더 : AWS, Azure, Google Cloud Platform 2. AWS EC2를 리모트 서버로 활용 1) 인스턴스 생성 2) 가상 공개 클라우드와 보안 그룹 생성, 포트 노출을 보안 그룹에 구성 3) SSH를 통해 인스턴스에 연결 3. 프로덕션에서 바인드마운트 - 프로덕션은 로컬 호스트 머신에 있지 않고 리모트 머신에 있고, 컨테이너는 스탠드얼론으로 작동하며 리모트 머신의 환경과 독립적이여야 한다. 이미지를 통해 컨테이너를 실행..
Udemy : Docker & Kubernetes 실전 가이드 (8) Laravel & PHP 도커화 1. Target 설정 애플리케이션 컨테이너 : PHP 인터프리터, Nginx 웹 서버, MySql 데이터베이스 유틸리티 컨테이너 : Composer : npm 유사, 써드파티 패키지를 설치하는 관리자, Laravel 설치 Laravel Artisan : 데이터베이스 마이그레이션 등 npm : Laravel의 뷰에서 일부 자바스크립트 코드가 필요한 경우 2. Nginx - nginx 포트 80 노출이 기본값 역할 : 요청을 받고 그 요청을 PHP 컨테이너로 송신하는 역할 공식 이미지 작업 방법 : ./nginx/nginx.conf:/etc/nginx.conf:ro 3. PHP - PHP 공식 + Laravel 언어 버젼 : 7.4-fpm-alpine ~ nginx 구성을 ..
Udemy : Docker & Kubernetes 실전 가이드 (7) 유틸리티 컨테이너 노드를 예로 들면 비어있는 프로젝트 폴더에서 npm init 명령어와 함께 package.json 생성 후 종속성 추가 ~ 프로젝트를 생성하기 위해 호스트 머신에 설치해야하는 부가 도구를 도커화한 것이 유틸리티 컨테이너 1. 컨테이너에서 명령을 실행하는 다양한 방법 노드 공식 이미지를 docker run 하면 인터렉티브 모드가 아니기 때문에 중지된다. docker run -it -d node + docker exec : 실행 중인 컨테이너 내 특정 명령을 실행할 수 있다. ~ 도커파일에 지정된 명령 외 특정 명령을 실행한다. docker exec 실행 중인 컨테이너 이름 ~ ex) docker exec -it hopeful_spence npm init - 계속 프로세스와 연결되려면 인터..
Udemy : Docker & Kubernetes 실전 가이드 (6) Docker Compose 1. 기본 개념 - 다수의 docker build와 docker run을 하나의 구성 파일로 정리할 수 있든 명령 셋이다. - 도커 컴포즈 파일 작성이 가장 첫 번째 단계 Service(Containers) : 다중 컨테이너 애플리케이션을 구성하는 컨테이너 - 터미널에서 도커 명령으로 할 수 있는 모든 것을 다 할 수 있다. 2. Compose 파일 만들기 docker-compose.yaml ~ 들여쓰기 사용가능 https://docs.docker.com/compose/compose-file/ Overview docs.docker.com 1) 버전 설정하기 : 문서를 참고해 컴포즈의 최신 버전을 사용한다. 2) services : yaml 파일은 들여쓰기로 종속성을 표현하기 때..
Udemy : Docker & Kubernetes 실전 가이드 (5) 다중 컨테이너 애플리케이션 구축 데이터베이스 컨테이너, 백엔드 서버 컨테이너, 프론트엔드 컨테이너 ~ 일반적으로 웹 애플리케이션을 만드는 방법 데이터베이스 컨테이너 : 컨테이너가 변경되더라도 담겨있는 내용은 보존되어야 한다 ~ Mongo 이미지는 로그인 방식을 지원하기 때문에 이를 이용해 데이터를 보존 할 수 있다. 백엔드 컨테이너 : 마찬가지로 로그 데이터 등이 보존되어야 한다. = 컨테이너는 계속 동작해야 하기 때문에 호스트 머신에서 리팩토링하는 소스 코드가 즉시 컨테이너에 반영되는 방식을 취한다. 프론트엔드 컨테이너 : 컨테이너 재실행 없이 코드의 즉시 반영 1. 데이터베이스 도커화 - MongoDB의 경우 27017 포트를 디폴트로 제공한다. 2. 백엔드 도커화 : 포트 넘버 노출에 유의하기 3...
Udemy : Docker & Kubernetes 실전 가이드 (4) 네트워킹 : (교차) 컨테이너 통신 어플리케이션 분석 - 엔드포인트 : 요청에 대한 응답 서비스를 사용할 수 있는(호출하는) 지점 1. 컨테이너와 로컬 호스트 머신 통신 + 웹과 통신 - 컨테이너 내부에서 웹과 통신하는 API는 별도의 설정이 필요없다. - 컨테이너에 데이터 베이스를 담지 않고 호스트 머신의 DB와 통신할 때 요청 주소를 로컬 호스트가 아닌 host.docker.internal을 사용한다. ~ 로컬에서 실행 중인 웹서버와 통신할 때도 사용 가능 -> 컨테이너에서 볼 수 있는 로컬 호스트 머신의 IP주소로 변환된다. 2. 다른 컨테이너와 통신 - 모든 컨테이너는 한 가지 역할에만 집중하는 것이 좋다. ~ 노드 웹 API 어플리케이션, 몽고 DB 컨테이너 데이터 베이스 컨테이너는 도커 허브에..
Udemy : Docker & Kubernetes 실전 가이드 (3) 이미지와 컨테이너의 데이터 관리하기 1. 데이터 카테고리/ 다양한 종류의 데이터 이해하기 - 실행 중인 어플리케이션은 코드 변경을 해선 안되기 때문에 이미지는 읽기 전용으로 기능한다 - 임시 사용자 데이터는 메모리에만 저장하는 등 일시 저장한다 ~ 읽기 전용으로 다룰 필요가 없다. -> 컨테이너 레이어(부가 레이어)에 저장한다. 읽기 - 쓰기 권한을 가지고 임시 데이터를 다루는 레이어. - 영구 사용자 데이터(ex 사용자 계정) : 컨테이너가 중지/ 제거되더라도 보존되어야 하는 데이터 -> 컨테이너와 볼륨에 저장한다. 2. 데이터 관리를 위한 도커화 - 임시 데이터의 경우 컨테이너에 저장되므로 로컬 머신에서 볼 수 없다 - 로컬 머신에서 코드를 변경한 경우 이미지를 새로 빌드하고 이를 기반으로 한 컨테이..
Udemy : Docker & Kubernetes 실전 가이드 (2) 이미지와 컨테이너 1. 이미지 vs 컨테이너 컨테이너 : 애플리케이션, 웹사이트, 노드 서버, 전체 환경 등을 모두 포함하는 패키지 -> 소프트웨어 단위 실행 이미지 : 템플릿, 컨테이너의 청사진 -> 코드, 도구와 런타임을 포함 ~ 한 이미지에 여러 컨테이너를 만들 수 있다 2. 사전에 만들어진 이미지 가져오기 : Dockerhub.com ex) 터미널에서 docker run node : node 공식 이미지 가져오기 docker ps -a : 생성한 모든 컨테이너 조회 docker run -it node : 노드 대화형 세션 열기 ~ 인터렉티브 노드 터미널에 접속할 수 있다. -> 이미지는 컨테이너에 필요한 모든 논리와 모든 코드를 보관하는 데 사용된다. 3. DockerFile을 이용해 커스텀 이미..

728x90