본문 바로가기
반응형

전체 글1065

[Docker] : 도커 스웜을 사용하는 이유 도커 스웜을 사용하는 이유 앞에서 보통 하나의 호스트를 기준으로 한다. docker ps 명령어는 하나의 도커 엔진에 존재하는 컨테이너의 목록을 출력하고 create, run 명령어 또한 하나의 도커 엔진에 컨테이너를 생성한다. 하지만 도커를 운영 환경에 실제로 적용하면 조금 달라진다. 하나의 호스트 머신에서 도커 엔진을 구동하다 CPU나 메모리 디스크 용량과 같은 자원이 부족한 경우가 있는데 이때 가장 편한 답은 성능이 좋은 서버를 새로 사는 것 이지만 별로 좋은 방법이 아니고 가장 많이 사용하는 방법은 여러 대의 서버를 클러스터로 만들어 자원을 병렬로 사용하는 것이다. 이렇게 되면 적당한 성능의 서버 여러 대를 하나의 자원 pool로 만들어 사용할 수 있고 성능이 좋은 비싼 서버를 사지 않아도 된다... 2022. 3. 3.
[Docker] : 도커 파이썬 라이브러리 파이썬 라이브러리를 사용하기 위한 환경은 Python 2.7이다. 리눅스를 설치하면 기본적으로 파이썬이 설치되어 있어서 도커 엔진을 리눅스 환경에서 사용하고 있으면 따로 설치가 필요 없다. 도커 홈페이지에서 docker-py로 파이썬 라이브러리를 확인할 수 있다. apt-get install python-pip -y 우분투에서 pip 설치 yum install epel-release -y yum install python-pip -y CentOS에서 pip 설치 pip install docker pip로 도커 라이브러리를 설치한다. 라이브러리 설치를 확인하기 위해 파이썬 셸을 실행해 도커 클라이언트를 실행한다. python import docker client=docker.DockerClient(base.. 2022. 3. 3.
[Spring Boot] : API 예외 처리 스프링 부트 기본 오류 처리 API 예외 처리도 스프링 부트가 제공하는 기본 오류 방식을 사용할 수 있다. @RequestMapping(produces = MediaType.TEXT_HTML_VALUE) public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) { } @RequestMapping public ResponseEntity error(HttpServletRequest request) { } /error 동일 경로를 처리하는 메서드 두 개를 코딩해 주었다. errorHTML은 produces를 사용해 값을 주어 클라이언트 요청의 Accept 해더 값이 text/html인 경우 errorHtml()을 호출해 view를 제공하고.. 2022. 3. 3.
[TIL] : 127 일일 배움을 위한 Today I Learned ! R R언어를 처음 배우기 시작했다. 우선 설치하고 기초를 먼저 예습해봤다. 2022.03.02 - [프로그래밍언어/R] - [R] : R 설치하기 2022.03.02 - [프로그래밍언어/R] - [R] : 함수와 객체 이해하기 2022.03.02 - [프로그래밍언어/R] - [R] : 패키지, Package 2022.03.02 - [프로그래밍언어/R] - [R] : R에서 외부 데이터 읽어 들이는 다양한 방법 Docker 도커 스터디를 진행하면서 약속된 진도를 오늘도 완료했다. 4월 말 까지 마칠 예정이다. 2022.03.02 - [Server & System/Docker] - [Docker] : events, stats, system df 명령어 202.. 2022. 3. 2.
[Spring Boot] : API 예외 처리 기본 체크하기 API 예외 처리 기본 체크 API 예외 처리에 대해 공부했는데 API 경우 일반적인 오류 페이지 말고도 생각할 게 많다. API는 오류 상황에 맞는 응답 스펙과 JSON으로 데이터를 내보내야 한다. 먼저 WAS에 예외가 전달되거나 response.sendError()가 호출되면 등록된 예외 페이지 경로를 호출하는 WebSErverCustomizer에 Component 주석을 풀어줬다. private String memberId; private String name; 간단하게 DTO를 만들고 @GetMapping("/api/members/{id}") public MemberDto getMember(@PathVariable("id") String id) { if (id.equals("ex")) { thro.. 2022. 3. 2.
[Docker] : 도커 자바 라이브러리 라이브러리 환경은 Eclipse Neon 64bit, Java 1.8.0 64bit, Maven3.3.3이다. 사용할 라이브러리는 공식 홈페이지에서 지원하는 docker-client이다. 🔗 ← 깃허브에서 확인이 가능하다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 3. 2.
[Docker] : Remote API 라이브러리를 이용한 도커 사용 필요에 따라 -H 옵션을 통해 원격의 도커 데몬을 제어하기 위해 사용하는 것도 좋지만 컨테이너 애플리케이션이 수행 할 작업이 많거나 초기화 등에 복잡한 과정이 포함되어 있다면 도커를 제어하는 라이브러리를 사용해 좀 더 쉽게 해결이 가능하다. 도커를 제어하고 싶을 때 Remote API에 대한 요청을 소스코드로 코딩 할 필요가 없고, 이미 만들어 놓은 라이브러리를 통해 사용할 수 있다. 이런 라이브러리 목록은 SDK 페이지에서 확인이 가능하다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 3. 2.
[Docker] : CAdvisor CAdvisor 구글이 만든 컨테이너 모니터링 도구로 컨테이너로서 간단히 설치할 수 있고 컨테이너별 실시간 자원 사용량 및 도커 모니터링 정보 등을 시각화해 보여준다. CAdvisor는 오픈소스로 깃허브에서 소스코드로 사용할 수 있고 도커 허브에서 도커 이미지로도 배포하고 있다. docker run \\ --volume=:/:/rootfs:ro \\ --volume=/var/run:/var/run:ro \\ --volume=/sys:/sys:ro \\ --volume=/var/lib/docker/:/var/lib/docker:ro \\ --volume=/dev/dis/:/dev/disk:ro \\ --publish=8080:8080 \\ --detach=true \\ --name=cadvisor \\ g.. 2022. 3. 2.
[Docker] : events, stats, system df 명령어 events, stats, system df 명령어 events events 명령어는 도커가 실시간 스트림 로그로 어떤 일이 일어나고 있는지 보여주는 기본적으로 제공하는 명령어이다. 사용법은 간단하다. docker events docker system events 위 명령어를 입력하고 어떤 이벤트도 도커 데몬에 발생하지 않아서 따로 출력 되는 게 없다. docker pull ubuntu:14.04 새로운 터미널을 열어 이미지를 pull해 본다. docker events 이미지를 pull하고 난 뒤 확인해 보면 로그 기록이 출력이 되는 것을 확인할 수 있다. 이처럼 도커 데몬에서 실행되는 명령어의 결과를 로그로 출력하는데 도커 클라이언트에서 입력된 모든 명령어를 출력하지는 않고 attach, commit,.. 2022. 3. 2.
[R] : R에서 외부 데이터 읽어 들이는 다양한 방법 CSV 포맷 읽어들이기 R이 있는 파일의 루트 파일에 예제 파일을 넣는다. read.csv()로 경로를 입력하여 파일을 불러올 수 있다. 즉, 외부에서 테이블로 정리한 데이터를 R로 가져오면 dataframe 객체에 담긴다. read.csv() 함수는 첫 번째 행을 변수행의 이름으로 인식하도록 기본 값이 설정되어 있다. 만약 csv 파일에 변수행의 이름이 없다면 read.csv() 함수의 header 인자를 FALSE로 설정해 주어야 한다. txt 포맷을 다양한 방법으로 읽어들이기 List 2022. 3. 2.
[R] : 패키지, Package 패키지, Package 3D plot을 구현해 주는 패키지 rgl을 설치한다. install.packages("rgl") library("rgl") 설치된 패키지를 사용하기 위해 로드한다. example(plot3d) 인터랙션 그래프인데 창 크기를 조절도 할 수 있고 그래프를 마우스로 잡고 돌려가면서 볼 수도 있다. install.packages("rgl") install.packages("ggplot2") install.packages("ggthemes") install.packages("data.table") install.packages("devtools") install.packages("dplyr") install.packages("plyr") install.packages("reshape2").. 2022. 3. 2.
[R] : 함수와 객체 이해하기 함수와 객체에 대해 공부하고 정리를 했다. 아래 노션 참고 링크를 확인하면 된다. https://ohju96.notion.site/fc0360c1b03c46368bf5fb423b42f300 2022. 3. 2.
[R] : R 설치하기 📝 ← 들어가서 다운로드 한다. 2022. 3. 2.
[TIL] : 126 일일 배움을 위한 Today I Learned ! Spring Boot 오류 페이지 마지막 챕터를 공부했다. 2022.03.01 - [Framework/Spring Boot] - [Spring Boot] : BasicErrorController가 model에 담는 정보 Docker 각종 드라이버 사용법에 대해 공부하고 이제 도커 데몬 디버그를 공부할 예정이다. 2022.03.01 - [Server & System/Docker] - [Docker] : Devicemapper 드라이버 사용하기 2022.03.01 - [Server & System/Docker] - [Docker] : ZFS 드라이버 사용하기 2022.03.01 - [Server & System/Docker] - [Docker] : 컨테이너 .. 2022. 3. 1.
[Docker] : 도커 데몬 디버그 명령어 도커 데몬에서 어떤 일이 일어나고 있는지 확인하기 위해 디버그 옵션으로 실행을 한다. 이렇게 하면 Remote API의 입출력, 로컬 도커 클라이언트 명령어 등을 로그로 출력한다. dockerd -D 명령어로 간단하게 확인할 수 있다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 3. 1.
[Docker] : overlay2에서 컨테이너 저장 공간 설정하기 overlay2를 스토리지 드라이버로 사용하고 있고 도커 데이터가 저장되어 있는 디스크가 xfs 파일 시스템일 경우 project quota 기능으로 컨테이너의 저장 공간을 제한할 수 있다. mkfs.xfs /dev/xvdf xfs 파일 시스템으로 포맷한다. mkdir /mnt/xfs mount /dev/xvdf /mnt/xfs -o rw,pqota 디렉터리 생성 후 디스크 마운트. DOCKER_OPTS="--storage-driver=overlay2 --data-root=/mnt/xfs" 도커 데몬 옵션에 추가해준다. —data-root에 옵션 값을 지정하면 해당 경로에 도커의 데이터가 새롭게 저장된다. docker info | grep Storage docker info | grep Backing 스.. 2022. 3. 1.
[Docker] : devicemapper 컨테이너 저장 공간 설정하기 CentOS는 도커 엔진이 devicemapper를 기본적으로 사용하도록 되어 있다. 여기서 컨테이너의 저장 공간을 확인해 본다. docker info | grep devicemapper docker run -it --name ubuntu ubuntu:14.04 df -h 확인해 보면 10GB의 저장 공간을 할당 받고 있는 것을 확인할 수 있다. 우분투에서 30GB를 모두 할당 받고 있는 것과는 차이가 있다. 이처럼 각 스토리지 드라이버마다 저장 공간을 할당하는 방식이 다르다. 하지만 일부 스토리지 드라이버는 저장 공간을 제한하는 것이 가능한데 devicemapper는 아래 코드를 도커 데몬 옵션에 넣으면 된다. DOCKER_OPTS="--storage-driver=devicemapper --storag.. 2022. 3. 1.
[Docker] : 컨테이너 저장 공간 체크하기 컨테이너 내부에서 사용되는 파일시스템 크기는 도커가 사용하고 있는 스토리지 드라이버에 따라 조금씩 다르다. 도커 엔진이 스토리지 드라이버를 사용하도록 되어있다면, 컨테이너는 호스트와 저장 공간의 크기를 공유한다. docker info | grep overlay2 docker run -it --name ubuntu ubuntu:14.04 df -h 사용 중인 드라이버와 용량을 체크해 본다. 2022. 3. 1.
[Docker] : ZFS 드라이버 사용하기 ZFS는 압축, 레플리카, 데이터 중복 제거 등 다양한 기능을 제공하지만 라이센스 문제로 리눅스 커널에 기본적으로 탑재되어 있지 않아 따로 설치해야 한다. CentOS 보다는 Ubuntu에서 사용하는 것을 권장한다. service docker stop 도커 데몬을 정지한다. apt install zfsutils-linux ubuntu 16.04와 18.04에서는 위 명령어로 zfs 관련 유틸을 설치할 수 있다. modprobe zfs 위 명령어로 모듈을 로드한다. zpool create -f zpool-docker /dev/xvdb 새로운 zpool을 생성한다. 뒤에 /dev/xvdb는 디바이스에 맞게 이름을 입력하면 된다. zfs create -o mountpoint=/var/lib/docker zpo.. 2022. 3. 1.
[Docker] : Devicemapper 드라이버 사용하기 Deivcemapper 드라이버는 레드헷 계열의 리눅스를 위해 개발된 스토리지 드라이버다. CentOS 등 포함한 대부분 리눅스 배포판에서 사용할 수 있지만 성능상 이유로 더 이상 사용하지 않는 것을 권장하고 있다. 대체로 overlay 혹은 overlay2 스토리지 드라이버를 사용하는 게 좋다. vi /etc/default/docker 도커 설정에 들어간다. DOCKER_OPTS="--storage-driver=devicemapper" 이렇게 Devicemapper 스토리지 드라이버를 사용하게 해준다. service docker restart 재시작은 꼭 해준다. ls -la /var/lib/docker/devicemapper/devicemapper/ 무려 100GB 크기의 data 파일이 생성되어 있.. 2022. 3. 1.
[Spring Boot] : BasicErrorController가 model에 담는 정보 BasicErrorController는 여러 정보를 model에 담아 뷰에 전달하는데 뷰 템플릿에서 출력해서 확인해 볼 수 있다. 이런 정보는 고객에게 굳이 보여 줄 필요도 없고 해커가 이런 라이브러리를 사용하구나? 이런 라이브러리의 취약점은 이거지! 하고 공격 할 수도 있어서 더욱 보여 줄 필요가 없다. server.error.include-exception=true server.error.include-message=on_param server.error.include-stacktrace=on_param server.error.include-binding-errors=on_param application.properties에서 이런 설정을 통해 보이고, 안 보이고, 조건에 따라 보이고 등을 설정할 수.. 2022. 3. 1.
반응형