Docker

·Docker
도커 컴포즈는 무엇이고어떻게 사용할까?      도커 컴포즈란? -- 도커 컴포즈는여러 개의 도커 컨테이너를 하나의 파일에 정의하여복잡한 애플리케이션의 구조를 파일로 관리할 수 있다.즉, 여러 개의 컨테이너들을 관리하는 도구이다. 도커 컴포즈는 도커 데스크답을 설치 하면 기본으로 같이 설치된다.  도커 컴포즈를 사용하는 가장 큰 장점 중에 하나는로컬 개발환경(PC)에서 아주 편리하게 활용할 수 있다.  도커 컴포즈를 사용하지 않았을 때에는웹 서버, 백엔드 서버, DB 서버, 볼륨 등각자 빌드, 컨테이너 실행, 볼륨 생성 등의 작업을 직접 동작시켜서 애플리케이션을 구현했다."docker create network"로 네트워크 생성"docker run"으로 데이터베이스 서버 실행"docker run"으로 백..
·Docker
컨테이너는 어떻게 최적화를 할까?      컨테이너 최적화 --모든 애플리케이션은 CPU와 메모리를 사용한다. 일반적인 프로세스는 사용량이 별도로 제한되어 있지 않기 때문에프로세스를 실행시키면 하드웨어의 모든 리소스를 사용할 수 있다. 다만 도커는 가상화 기술이고컨테이너는 격리된 공간에서 실행하기 때문에프로세스가 사용할 수 있는 리소스를 제한할 수 있다. 컨테이너의 사용 가능 리소스를 제한하는 방법은"docker run" 명령어로 컨테이너를 실행할 때 옵션으로 제한할 수 있다.  컨테이너의 최대 CPU(코어) 사용량 제한하는 옵션  (단위는 코어 개수)--cpus=CPU코어수  컨테이너의 최대 메모리 사용량 제한하는 옵션  (단위는 B, K, M, G로 메모리 용량 뒤에 작성하면 된다.)--memory=..
·Docker
3Tier 아키텍처란 무엇이며어떻게 구성하는 것일까?      3 Tier 아키텍처 --3 Tier 아키텍처는소프트웨어 애플리케이션을 3 가지 계층으로 나누어 설계하는 구조를 의미한다.(보통 웹 애플리케이션은 3 가지 종류의 서버로 구성된다.) 각 계층마다 특정한 기능을 담당하며, 서로 분리되어 독립적으로 동작한다.이러한 구조는 시스템의 확장성, 유지 보수성, 관리 용이성을 높이는데 도움이 된다.  1. 프레젠테이션 계층 (Presentation Tier)역할   :   사용자와 상호작용하는 인터페이스를 제공구성 요소  :  웹 브라우저, 모바일 앱, 데스크 탑 애플리케이션 등주요 기능  :  데이터를 사용자에게 표시하고, 사용자의 입력을 받아 비즈니스 계층으로 전달해당 계층은 프론트엔드인 웹 서버를 의..
·Docker
이미지를 빌드할 때캐싱을 어떻게 활용할까?      이미지 빌드 시에 적용되는 캐싱 --캐싱이란?시간이 걸리는 작업의 결과물을 미리 저장해 두고동일한 작업이 발생했을 때 다시 작업을 수행하지 않고 저장해 둔 결과를 빠르게 제공하는 기술로빌드 속도를 빠르게 만들어주는 기술이다.  위 그림처럼dockerfile의 지시어들을 사용해서 레이어를 하나씩 추가하게 된다.이러한 과정에서 각 레이어들은 도커가 캐시로 저장하게 된다.  이후 다시 같은 내용으로 동일한 빌드를 수행하게 되면즉, 빌드에서 동일한 지시어를 사용하게 되면이미지 레이어를 새롭게 만드는 것이 아니라이전에 캐시에 저장되어 있는 이미지 레이어를 그대로 가져와서 사용할 수 있다.새로 레이어를 만들지 않고 기존에 저장했던 레이어를 가져와서 사용하니 빠르게..
·Docker
이미지 레이어는 어떻게 관리해야 할까?      dockerfile과 이미지 레이어 -- 이미지는 레이어로 구성되어 있으며 이미지를 빌드할 때 생성되는 레이어는 일반적으로 dockerfile에 작성된 지시어 하나당 레이어 한 개가 추가된다.(레이어를 추가하지 않는 지시어도 존재한다.) 위 그림에서는레이어가 5개 추가된 것을 볼 수 있지만베이스 이미지인 node:14 이미지는 이미 레이어가 14개로 구성된 이미지기 때문에결과적으로 총 18개의 레이어로 구성된 이미지가 빌드될 것이다. 레이어의 개수가 늘어나는 것은 이미지의 크기를 증가시키는 것이고이미지의 크기가 증가된다면 빌드의 속도가 느려지고 이미지 관리도 복잡해지는 단점이 생긴다. 그래서 레이어는 꼭 필요한 레이어만 추가하는 것이 좋다.     레이어의..
·Docker
볼륨이 무엇이며어떻게 사용하는 것일까?      볼륨 (Volume) --볼륨은도커에서 컨테이너와 호스트 간의 데이터들을 공유하거나데이터를 영구적으로 저장하기 위해 사용되는 저장소이다. 도커에서 컨테이너는 Stateless 하기 때문에컨테이너가 삭제 또는 재시작이 되면 기존에 사용했던 모든 데이터가 컨테이너를 시작하기 이전인 이미지의 상태로 초기화가 된다.즉, 컨테이너가 실행된 이후에 모든 동작 기록은 컨테이너 레이어에 쌓이게 되는데이 컨테이너 레이어는 컨테이너 삭제 or 재시작이 되면 없어진다. 하지만 서버를 운영을 하다보면 쌓인 데이터를 계속 유지해야 하는 경우가 존재한다.또는 트래픽을 분배하기 위해 로드밸런싱을 사용하여 여러 개의 동일한 서버를 운영해야 되며이렇게 동일한 서버에서 일관성있는 데이터를..
·Docker
가상 네트워크는 무엇이고어떻게 동작하는 것일까?      네트워크란? --2024.06.23 - [Terminology] - 네트워크란? (feat. IP, 네트워크 인터페이스, 포트, NAT, 포트포워딩, DNS)--    가상 네트워크 구성 --가상 네트워크는서버 한 대 안에서 여러 네트워크를 구성하는 기술이다. 해당 가상 네트워크망 안에서 컨테이너들이 존재할 수 있고해당 컨테이너들은 같은 가상 네트워크망 안에서 서로 통신할 수 있으며내부의 컨테이너와 외부의 서버와도 통신이 가능하다.   위 그림은사설망을 통해서 현재 사용 중인 PC에 IP(192.168.0.10)를 할당받고해당 PC에 도커 가상화 기술을 사용하여 내부에 컨테이너 여러 대를 실행시킨 구조이다. 인터넷 선(랜선)이나 공유기와 같이 물리..
·Docker
가상 네트워크에 포트포워딩을하는 이유와 방법이 무엇일까?      가상 네트워크의 NAT, 포트포워딩 --가상 네트워크에서 포트포워딩을 하는 명령어 형식docker run {-p 호스트OS포트:컨테이너포트} ...  -p 포트포워딩을 지정해주는 옵션 "-p" 옵션으로 `:` 클론을 기준으로 두 개의 포트를 작성하여 포트포워딩을 지정해 준다. 왼쪽에 작성하는 포트  =  서버(PC)에서 사용할 호스트OS의 포트번호를 지정오른쪽에 작성하는 포트  =  컨테이너가 사용하는 포트번호를 지정 기본적으로 같은 가상 네트워크 안에서 컨테이너를 실행하면 해당 컨테이너끼리는 통신이 가능하다.다만 도커를 설치하고 사용 중인 서버(PC)의 호스트 OS나 가상 네트워크의 외부에서 가상 네트워크의 컨테이너로 접근하려면 포트포워..
아-니지
'Docker' 카테고리의 글 목록