본문 바로가기

IT102

우분투에 도커 설치 https://docs.docker.com/engine/install/ubuntu/ Install Docker Engine on Ubuntu docs.docker.com 도커 공식문서 우분투 설치 관련 페이지로 들어간다. OS 요구사항 - 위 버전에서만 설치할 수 있다. 0. 우분투 버전 확인하기 $ cat /etc/*release* 명령어를 입력하면 현재 우분투의 버전을 확인할 수 있다. 중간에 VERSION= ... 부분을 보면 Jammy Jellyfish 라고 나와있는걸 확인할 수 있다. 1. 기존에 오래된 docker 버전이 있다면 삭제하기 2. 쉘 스크립트 방식으로 docker 설치하기 sh파일을 다운받고 실행하면 도커 설치가 시작된다. 1~2분 정도 걸릴 수 있다. 3. 설치된 도커 버전 확인.. 2023. 1. 18.
도커 작동원리 오늘날 애플리케이션은 컨테이너화된 버전이 있는것들이 많다. 많은 기관에서는 자사 제품을 컨테이너화 해서 docker Hub라는 퍼블릭 docker 보관소에 공개하고있다. OS, DB, 서비스, 툴 등을 찾을 수 있고 이미지를 찾아 호스트에 docker를 설치하면 docker run 명령어에 이미지 이름만 붙이면 애플리케이션을 손쉽게 실행할 수 있다. 이미지 vs 컨테이너 이미지는 VM템플릿과 같은 패키지 또는 템플릿으로 컨테이너를 만드는데 사용되며 컨테이너는 서로 분리된 이미지 인스턴스가 실행되는 곳으로 각각의 환경과 프로세스들을 지니고 있다. 만약 찾는 이미지가 없다면 이미지를 직접 만들어 docker Hub에 올려서 다른 사람들과 공유할 수도 있다. 과거에는 개발자들이 애플리케이션을 직접 개발하고 운.. 2023. 1. 18.
도커 컨테이너 vs 가상머신 먼저 docker 도식이다. 제일 아래에 하드웨어 인프라가 있고 그 위에 운영체제가 있고 그 위에 docker가 설치되어 컨테이너를 관리한다. 하이퍼바이저가 하드웨어 위에 있고 그 위에 가상머신이 있다. 각각의 가상머신에는 각각의 운영체제와 의존성,애플리케이션이 설치되어있다. 이러한 구조는 기반 리소스를 많이 사용하는데 여러개의 가상운영체제와 커널이 실행되기 때문이다. docker 컨테이너는 가볍고 MB단위의 용량만을 차지하므로 몇 초만에 docker 컨테이너를 부트할수 있지만 가상머신은 무거워서 용량을 많이 차지하고 그 단위가 GB에 달하고 운영체제 전체를 부트해야하기 때문에 시간이 많이 걸린다. 그리고 한 가지 중요한 점은 docker가 완전히 분리되지 못한다는 점이다. 이는 컨테이너 간 공유하는 커.. 2023. 1. 18.
도커, 컨테이너 컴포넌트를 실행할 때, 각자의 의존성과 라이브러리를 갖춘 분리된 컨테이너를 활용해 같은 가상머신과 운영체제에서 환경과 컨테이너를 분리할 수 있다. 그 덕에 docker 설정을 한 번만 하면 개발자들이 개발을 시작할 때, docker 실행 명령어 하나면 운영체제에 상관없이 진행할 수 있다. 각자의 시스템에 docker만 설치되어 있으면 된다. 컨테이너 완전히 분리된 환경으로, 각자의 프로세스, 서비스, 네트워크 인터페이스, 마운트를 가상 머신처럼 가지고 있지만 동일한 운영체제 커널을 공유한다. 운영체제의 기본 개념 Ubuntu, Fedora, SUSE, CentOS 같은 운영체제는 운영체제 커널과 소프트웨어 두 가지로 구성되어 있다. 운영체제 커널은 기반 하드웨어와 상호작용하는 역할을 하며 Linux인 운.. 2023. 1. 18.
Junit5 예외 test - assertThrows @Test void exceptionTest() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberServiceImpl = ac.getBean("memberServiceImpl", MemberService.class); assertThat(memberServiceImpl).isInstanceOf(MemberService.class); } AppConfig.class로 컨테이너에 등록된 스프링 빈 중에서 MemberService 클래스에 속하는 "memberServiceImpl" 이라는 이름의 빈을 조회해서 조회한 빈이 MemberService .. 2023. 1. 18.
좋은 객체 지향 설계의 5가지 원칙(SOLID) • SRP: 단일 책임 원칙(single responsibility principle) • OCP: 개방-폐쇄 원칙 (Open/closed principle) • LSP: 리스코프 치환 원칙 (Liskov substitution principle) • ISP: 인터페이스 분리 원칙 (Interface segregation principle) • DIP: 의존관계 역전 원칙 (Dependency inversion principle) 5가지 원칙의 앞글자만 따서 SOLID이다. SRP 단일책임 원칙 한 클래스는 하나의 책임만 가져야한다. 중요한 기준은 변경이다. 변경이 있을 때 파급효과가 적으면 단일 책임 원칙을 잘 따른것이다. OCP 개방-폐쇄 원칙 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있.. 2023. 1. 17.