IaC (Infrastructure as Code, 코드형 인프라)가 필요한 이유 커맨드 기반의 인프라 구성 시 사용자 실수 등의 인적 오류 가능성이 높음. 설치 순서와 상호 연관성 등을 고려하여 각종 라이브러리와 함께 복잡한 명령어들을 고민하게 되는데 코드형 인프라로 해결 가능. 수정사항은 언제든 코드 변경을 통해 가능하다. 따라서 개발 업무 목적을 이루는 것에만 온전히 집중할 수 있다. IaC는 탄력성, 확장성, 반복성을 부여하게 되어 눈송이 서버가 아닌 동일한 환경을 보유한 서버(컨테이너)를 수십~수백대를 운영, 관리하게 해준다. 눈송이 서버: 실제 운영 환경은 다양한 서버를 갖고 있다. 개발서버, 테스트서버, 운영서버 등이 있는데 운영을 하다보면 여러가지 변경 사항이 있다. 이때 똑같은 setup..
Docker DNS Docker 컨테이너는 IP를 사용자 정의 네트워크의 컨테이너 이름으로 자동 확인하는 DNS 서버가 Docker 호스트에 생성된다. 동일 네트워크 alias 할당을 통해 하나의 타겟 그룹을 만들어 요청을 Round Robin 방식으로 응답한다. 예제로 만나보자 사용자 정의 네트워크 생성 docker network create fc-net 하나의 fc-net 네트워크에 포함된 컨테이너 2개 생성, 논리적인 타겟 그룹 생성 docker run -d --name=es1 --net=fc-net --net-alias=esnet-tg -p 9201:9200 -p 9301:9300 -e "discovery.type=single-node" elasticsearch:7.17.10 docker run ..
Docker image는 Container runtime에 필요한 바이너리, 라이브러리 및 설정 값 등을 포함하고 변경되는 상태 값을 보유하지 않고(stateless) 변하지 않는다.(Immutable, Read Only) Docker image 관련 명령어 workflow 이미지 내려받기 docker pull [options] name:[tag] 만약 docker pull busybox 라는 명령어를 친다면 tag는 기본적으로 latest, 경로는 docker.io/library 로 설정된다. 즉 기본적으로 docker.io가 default registry로 등록되어 있다. 이미지의 구조 확인 이미지는 layer 구조이다. 맨 위에서 말했드시 이미지는 불변 즉, read only 형태로 만들어진다 그렇..
Portainer란? portainer는 Docker Web 관리 툴 이다. 간단하게 말해서 현재 실행되고있는 Docker 관련된 컨테이너, 이미지, 볼륨, 네트워크 등을 web에서 UI적으로 관리할 수 있게 해준다. portainer volume 생성 docker volume create portainer_data 컨테이너 실행 | (기본적으로 9000포트 사용) docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --restart=always portainer/portainer portainer 동작 확인 docker ps | grep portainer 아래와 같이 회원가입을 하고 ..
Nginx는 웹 서버이다. 보통 웹 서비스는 클라이언트 -> 웹 서버 -> WAS -> DB 순으로 요청이 되고 역순으로 응답이 된다. WAS가 있는데 왜 웹 서버를 사용할까? 이유는 WAS의 부담을 줄여주기 위해서 사용된다. WAS는 로그인, 회원가입, 개인정보 수정 등 동적 작업을 처리하는 것만으로도 작업량이 많다. 이에 HTML, CSS, JS, 이미지 등 정적인 파일을 클라이언트에게 전달하는 역할을 웹 서버에 위임함으로써 WAS 작업 부담을 줄일 수 있다. Nginx를 통해 리버스 프록시 기술을 구현할 수 있다. 프록시의 사전적 정의는 "대리" 이다. 프록시는 크게 포워드 프록시, 리버스 프록시로 구분된다. 포워드 프록시는 클라이언트와 인터넷 그 사이에 있는 영역을 말한다. 클라이언트가 어떠한 정..