✔️ Docker의 LifeCycle create → start → (pause) → (unpause) → (kill) → stop → rm → run ----------> Docker run은 Docker create + Docker start 를 합친 것이다. Docker create - 컨테이너를 생성하며 Docker start - 컨테이너를 실행한다. 실행의 원칙은 app이 종료가 되면 컨테이너도 종료 되는 것이다. 여기서의 종료는 stop을 의미한다. pause, unpause 명령을 통해 컨테이너를 일시 중지, 중지 해제 할 수도 있다. puase를 시키면 사용하던 리소스들을 그대로 가지고 있다. kill은 프로세스를 종료시키는 것이며, 컨테이너를 강제종료시키는 것이다. vagrant@dock..
✔️ Docker 버전 도커의 설치가 완료되었다면 도커의 버전을 확인해보자 docker version Client - 도커 명령어를 의미한다. - Docker CE : Community Edition - Docker EE : Enterprise Edition 20.10.14 : 2020년도 10월에 나온 버젼을 의미한다. Server - 도커 엔진 (도커 서비스가 실행하는 서버) ✔️ Docker 아키텍처 Docker 명령어(클라이언트) Docker host(서버) 서버에는 도커 데몬이 작동하고 있으며 도커 명령어가 도커 데몬에게 명령을 내리는 형태이다. 중요한 것은 레지스트리라고 하는 저장소인데, 우리가 ec2를 만들 때 AMI 이미지가 필요한 것 처럼 컨테이너를 만들기 위해서는 컨테이너용 이미지가 필..
✔️ 터미널 환경 구성 (cli 환경 구성) ✔️ Oh My Zsh 설치 맥이나 유닉스, 리눅스 계열을 사용하는 개발자들이 많이 사용하는 oh-my-zsh로 cli 환경을 구성해보자 Oh My Zsh - a delightful & open source framework for Zsh Oh My Zsh is a delightful, open source, community-driven framework for managing your Zsh configuration. It comes bundled with several helpful functions, helpers, plugins, themes, and a few things that make you shout... OH MY ZSH! ohmyz.sh ..
✔️ Docker(도커) 설치 ✔️ Ubuntu Virtual Machine 구축 Vagrant를 이용해 Ubuntu VM을 구축하고 그 위에 Docker를 설치할 것이다. Vagrant.configure("2") do |config| # Define VM config.vm.define "docker" do |centos| centos.vm.box = "ubuntu/focal64" centos.vm.hostname = "docker" centos.vm.network "private_network", ip: "192.168.100.100" centos.vm.provider "virtualbox" do |vb| vb.name = "docker" vb.cpus = 2 vb.memory = 4096 end en..
✔️ Monolithic Architecture Monolithic은 하나의 의미를 가진다. 어플리케이션의 구조에서 UI 서비스, 계정 서비스, 장바구니, 배송 등의 서비스가 하나로 만들어져 있다는 것이다. 어떤 프로그래밍 언어든 상관없이 모든 기능들을 하나의 구조로 만든 것을 모놀리틱 구조라고 한다. 모놀리스를 보통 구시대적인 방법으로 치부하기 쉬우나 이 방식은 지금도 상당히 많이 쓰는 일반적인 방식이다. 그림 상에 주황색 박스가 뒤로 겹쳐진 부분이 스케일링과 관련된 부분인데, 만약 서비스 중에 특히 사용자 트래픽이 몰리는 부분이 Shipping Service라고 해보자 서버의 다운을 막기 위해서는 스케일링이 필요할 것이다. 이럴 때는 다른 서비스의 스케일링은 필요없고 Shipping Service의 ..
✔️ Hypervisor와 Docker Hypervisor(가상화)의 목적은 무엇인가 ? 가장 핵심이 되는 목적은 isolation(분리)이다. 그렇다면 무엇을 분리 시키기 위해 사용하는가 ? 리소스를 분리 시키기 위해서 사용한다. 하나의 HW에 하나의 OS가 올라가면 그 위에 여러개의 app이 배치된다. app의 동작, 즉 프로세스들이 여러개 존재하게 되는데 이때 프로세스들 간의 격리가 되지 않는다. 이렇게 되면 프로세스가 다른 프로세스에게 영향을 미칠 수 있고 운영체제에도 영향을 미칠 수 있다. → 한마디로 어플리케이션 간에 분리가 되지 않으면 서로의 동작에 영향을 미칠 수 있다. 그래서 우리는 하나의 큰 하드웨어에 Hypervisor를 통해 가상화를 하고 VM이라는 개념을 만들어 논리적으로 app을..