jenkins로 CI를 하던 와중 jenkins 서버 내 용량이 이상하리 만큼 많이 쌓여서 원인을 분석하면서 storage driver에 대해 알게 됐습니다. storage driver를 잘 알고 있지 못하면 생기는 문제 그리고 storage driver 종류에 따라 생기는 문제를 알아보겠습니다. Storage Driver란? docker storage driver는 docker image로 부터 container를 생성하는데 이 때 docker image는 application code, system, library등을 포함합니다. 그리고 이를 저장하고 관리하기 위해선 store system이 필요한데 이것을 storage driver 이라고 합니다. 또한, storage driver는 image가 여..
회사에 Docker Swarm을 사용하여 현재 하나 씩 Docker rising 하며 옮기고 있습니다. 도입하고 나니 뿌듯함도 있었습니다. 뭔가 많이 개선된 점들이 보였기 때문인데요. 하나 씩 차근차근 살펴봅시다. CI와 CD의 완전 자동화 기존에는 하나의 서버를 병합 후 배포하는 동안 트래픽이 빠져나가는 걸 확인하고 이 후 배포 한 후 다시 트래픽이 들어오고 나서 개발자가 수동으로 다음 서버를 배포하는 방식이었습니다. 하지만 docker compose로 세밀한 배포 프로세스 조정이 가능하다보니 이를 docker swarm에 맡기고 배포 할 때 알아서 트래픽이 들어가야만 다음 컨테이너가 교체되어 개발자 입장에선 자동화 된 시스템에 맡길 수 있게 됐습니다. 이 동안 다른 시스템 배포를 하여 배포 시간을 줄..
이번엔 Docker swarm을 운영하면서 다양한 편리한 Tool 또는 기능을 소개해보겠습니다. 소개할 기술은 총 3가지입니다. 정적 Resource 파일을 관리하기 위한 Docker swarm config Docker 운영 GUI툴인 Portainer apm monitoring 위한 scouter 연동 Docker Swarm Config Docker swarm config는 Kubernetes의 configmap과 비슷한 기능을 제공합니다. 정적인 파일들을 관리하고 서비스 단위로 공유가 가능합니다. 또한 볼륨을 주입해줄 수 있어 클러스터간 파일을 공유할 수 있습니다. 하지만 k8s의 RBAC(Role-Based-Access-Control)이나 etcd를 이용한 전체 데이터 암호화 등의 기능은 제공하지 ..
운영 중인 서비스는 대부분 서비스 포트를 외부로 노출 시키지 않습니다. reverse proxy를 서버에 두고 80포트를 뚫어 요청을 받는경우가 많습니다. 이렇게 했을 때 다음과 같은 장점이 있기 때문인데요. 처리율 제한 알고리즘을 구현하여 서버 부하에 대비할 수 있습니다. 직접적으로 외부에 port 정보를 노출하지 않음으로써 DDoS 공격으로 부터 안전할 수 있습니다. Flow chart로 보면 다음과 같은 구조를 띕니다. 클러스터 환경에서 Nginx의 문제점 보통 reverse proxy로 Nginx를 많이 사용하고 있습니다. 하지만 Docker Swarm 환경에서는 클러스터로 운영되고 있기 때문에 reverse proxy가 도메인이나 서버를 라우팅 하기 위해 여러 domain 정보를 알고 있어야 했..
도커 스웜으로 서비스를 배포해봅시다. 우선 registry에 올리기 위해 dockerfile을 먼저 작성해줘야겠죠? 회사에선 사설 registry를 구축하여 image를 관리했지만 여기선 실제로 구축하기보단 Dockerhub라는 도커에서 제공해주는 registry를 사용해보겠습니다. dockerhub는 이미지를 저장할 수 있게 docker에서 무료로 제공해줍니다. https://hub.docker.com/ Docker Hub Container Image Library | App Containerization Deliver your business through Docker Hub Package and publish apps and plugins as containers in Docker Hub for e..
요즘은 서버를 분산시켜 관리하는 경우가 많습니다. 심지어 MSA로 전환되는 경우에는 각각 서버를 따로 운영하는건 너무 많은 비용을 야기하는데요 이럴 때 효과적인 방법으로 관리하기 위해 나온 클러스터라는 개념이 있습니다. 회사에서 부하 분산 서버를 클러스터로 전환하면서 배운 것들을 공유드리겠습니다. 사전에 이 글을 읽어보시는걸 추천드립니다. https://golf-dev.tistory.com/56 [Docker 4주차] Docker Swarm 도커 스웜을 사용하는 이유 보통 현업에서는 지금까지 한 것 처럼 호스트 하나로만 이루어져 있지 않습니다. 이유는 간단합니다. CPU나 메모리, 디스크 용량같이 자원이 부족한 경우에 스케일 아 golf-dev.tistory.com 부하 분산서버 부하 분산 서버는 하나의..
도커 스웜을 사용하는 이유 보통 현업에서는 지금까지 한 것 처럼 호스트 하나로만 이루어져 있지 않습니다. 이유는 간단합니다. CPU나 메모리, 디스크 용량같이 자원이 부족한 경우에 스케일 아웃을 하여 서버를 병렬로 쭉 늘려나가는 것입니다. 그러나 여러 대의 서버를 하나의 자원 풀로 만드는 것은 쉬운 작업이 아닙니다. 새로운 서버나 컨테이너가 추가 됐을 때, 이를 발견 하는 작업부터 어떤 서버에 컨테이너를 할 것인가에 대한 스케줄러와 로드밸런서 문제, 클러스터 내의 서버가 다운 됐을 때 고가용성을 어떻게 보장할지 등이 문제로 남아있습니다. 이 때 문제를 해결할 솔루션 중 도커에서 공식하는 스웜이 있습니다. 스웜 클래식과 도커 스웜 모드 스웜 클래식과 스웜 모드는 여러 대의 도커 서버를 하나의 클러스터로 만..
도커 이미지 모든 컨테이너는 이미지를 기만으로 생성되기 때문에 이미지에 대한 개념을 일고 있어야 합니다. 일단 대략적으로 큰 그림을 그려보면 다음과 같습니다. OS에서 apt-get 혹은 yum install을 사용하여 레지스트리에서 패키지를 내려받듯이 Docker는 도커 허브를 이용하여 위 사진 처럼 내려받을 수 있습니다. 또한 계정만 가지고 있으면 누구나 Docker Image를 만들어서 저장소에 저장할 수 있습니다. 또한 Docker hub에서는 공식(Official) 이미지라는 라벨을 이용하여 누구나 올렸을 때 공식 이미지를 찾지 못하는 번거로움을 제거 하였습니다. docker search {image명} 을 이용하여 검색해보면 OFFICIAL에 [OK] 라고 붙은 이미지를 볼 수 있습니다. 이것..
도커 이미지와 컨테이너 도커 엔진에서 사용하는 기본 단위는 이미지와 컨테이너이며, 이 두가지가 도커 엔진의 핵심입니다. 도커 이미지 이미지는 컨테이너를 생성할 때 필요한 요소이며, 가상 머신을 생성할 때 사용하는 iso파일과 비슷한 개념입니다. 이미지는 바이너리 파일로 존재하며, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용됩니다. 구조는 다음과 같습니다. 저장소이름/이미지이름: ex) golf/jenkins:1.12.4 jenkins:latest 저장소 : 이미지가 저장된 저장소를 의미, 저장소가 명시되어있지 않으면 보통 Docker hub에 저장된 공식 이미지입니다. 이미지 이름 : 이미지가 어떤 역할을 하는지 식별하기 위해 만드는 경우가 많습니다. 예를들어 jenkins가 이름이면 해당 이미지는..
가상 머신과 도커 컨테이너 기존의 가상 머신은 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식이었다. 이러한 방식은 커널 라이브러리 운영체제를 운영하기 위한 여러가지 리소스가 필요했고 그로인해 이미지의 크기가 매우 커진다. 그리고 하이퍼바이저를 반드시 반드시 거쳐야 하기에 일반 호스트에 비해 성능이 떨어진다. 즉 이렇게 무겁고 비효율적인 성능에 가상 머신을 이용할 이유가 없었다. 그래서 나온 것이 바로 docker다. 도커 컨테이너는 리눅스의 자체 기능인 chroot, 네임스페이스, cgroup을 사용함으로써 프로세스 단위의 격리 환경을 만들기 때문에 성능 손실이 거의 없다. 또한 컨테이너에 필요한 커널은 호스트의 커널을 공유해 사용하여 OS가 빠지기 때문에 훨씬 적은 용량의 이미지 파일 구..
- Total
- Today
- Yesterday
- docker
- 취업준비
- 프로그래밍
- 코딩
- IT
- Redis
- java
- JPA
- 자바
- 면접준비
- 개발
- swarm
- 면접
- CS
- thread
- DevOps
- 개발자
- Spring
- 취업
- 게시판
- 코드
- 백엔드
- Kotlin
- 동시성
- MySQL
- 면접 준비
- 인터뷰
- 취준
- DB
- 프로젝트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |