반응형 전체 글1065 [Docker] : YAML 파일 작성(1) YAML 파일 작성 도커 컴포즈를 실 사용하기 위해 더 많은 옵션과 명령어를 공부해야 하고 YAML 파일 작성에도 익숙해야 한다. 기존에 사용하던 run 명령어를 YAML 파일로 변환해 사용하는 게 도커 컴포즈의 사용법이다. YAML 파일은 버전, 서비스, 볼름, 네트워크 이렇게 총 4개의 정의 항목으로 구성된다. 가장 많이 사용하는 건 서비스 정의이고 볼륨과 네트워크 정의는 서비스로 생성된 컨테이너에 선택적으로 사용된다. 항목의 하위 항목을 정의하기 위해 2개의 공북으로 들여쓰기해서 상위 항목과 구분한다. 버전 정의 버전은 YAML 맨 윗 부분에 정의한다. version: '3.0' 서비스 정의 서비스는 컨테이너로 구현된다. 하나의 프로젝트로서 도커 컴포즈에 의해 관리된다. services: my_co.. 2022. 3. 8. [Docker] : 도커 컴포즈의 프로젝트, 서비스, 컨테이너 도커 컴포즈의 프로젝트, 서비스, 컨테이너 도커 컴포즈는 컨테이너를 프로젝트 및 서비스 단위로 구분하기 떄문에 컨테이너의 이름은 일반적으로 프로젝트이름_서비스이름_서비스내에서컨테이너의번호로 구성되어 있다. 하나의 프로젝트는 여러 개의 서비스로 구성된다. 여러 서비스는 다시 여러 컨테이너로 구성된다. 스웜 모드에서의 서비스와 마찬가지로 하나의 서비스에는 여러 컨테이너가 존재할 수 있도록 컨테이너의 번호를 붙여 서비스 내의 컨테이너를 구분한다. docker-compose scale mysql=2 docker-compose ps 컨테이너 목록을 확인해 보면 서비스의 컨테이너가 늘어난 것을 확인할 수 있다. 컨테이너 수를 늘이고 줄여서 일정하게 유지할 수 있다. docker-compose down 명령어로 프로.. 2022. 3. 8. [MariaDB] : CentOS에서 MariaDB 설치 및 셋팅 MySQL 유료화로 인해 개발된 관계형 데이터 베이스 코어는 MySQL을 사용해서 MySQL에서 사용하는 쿼리를 그대로 사용할 수 있다. 즉, 그냥 완전 똑같다고 보면 된다. 기업들도 MySQL에서 MariaDB로 전환하는 추세이다. vi /etc/yum.repos.d/MariaDB.repo [mariadb] name = MariaDB baseurl = gpgkey = gpgcheck = 1 repo 파일 생성하기 yum install MariaDB-server MariaDB-client mariadb 설치 systemctl status mariadb mariadb 상태 확인 systemctl start mariadb mariadb 실행하기 systemctl enable mariadb 부팅할 때 자동 실.. 2022. 3. 8. [Spring Boot] : 스프링 부트 이해 스프링 부트 이해 경량 컨테이너를 사용하고 있다는 큰 특징이 있다. 자바에서는 프로그램을 사용하기 위해 메모리에 올라가야 자바 프로그램을 사용할 수 있는데 스프링도 마찬가지로 자바에서 메모리에 올려주어야지 가져다 사용할 수 있다. 톰 캣 실행하면 자동으로 메모리에 올라간다. ( 컨트롤러, 서비스, 맵퍼 ) → 이처럼 메모리에 올린 것을 스프링이 관리를 한다. AOP : 관점 지향 프로그래밍 모든 자바 파일은 자바 오브젝트를 상속 받게 되고 중간에 부모가 끼게 된다. 공통 기능은 부모에 공통 기능을 정의하고 가져다 사용하는 방식으로 구현한다. 이렇게 하는 게 객체 지향 프로그래밍 → 문제 발생 : A라는 엄마가 있을 때 자식이 4명이 있다. 엄마의 기능을 모두 다 사용하지 않고 3명만 사용하고 1명만 사용.. 2022. 3. 8. [TIL] : 132 일일 배움을 위한 Today I Learned ! Docker 도커 컴포즈와 노드 라벨에 대해 공부했다. 이쯤 되니까 머리가 복잡하다. 2022.03.07 - [Server & System/Docker] - [Docker] : 노드 AVAILABILITY변경하기 2022.03.07 - [Server & System/Docker] - [Docker] : 노드 라벨 추가하기 2022.03.07 - [Server & System/Docker] - [Docker] : service 제약 설정 2022.03.07 - [Server & System/Docker] - [Docker] : 도커 컴포즈를 사용하는 이유 2022.03.07 - [Server & System/Docker] - [Docker] : 도커 컴포즈.. 2022. 3. 7. [Docker] : docker-compose.yml 작성과 활용하기 docker-compose.yml 작성과 활용 docker run -d --name mysql \\ alicek106/composetest:mysql \\ mysqld docker run -d -p 80:80 \\ --link mysql:db --name web \\ alicek106/composetest:web \\ apachectl -DFOREGROUND run 명령어를 docker-compose.yml 파일로 변환해 컨테이너를 생성하고 실행한다. version : '3.0' services: web: image: alicek106/composetest:web ports: - "80:80" links: - mysql:db command: apachectl -DFOREGROUND mysql: image.. 2022. 3. 7. [Docker] : 도커 컴포즈 설치하기 도커 컴포즈 설치 curl -L /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose 도커 컴포즈는 깃 허브 저장소에서 내려 받을 수 있다. docker-compose -v 도커 컴포즈 정상 설치를 확인하기 위해 버전을 확인해 준다. 2022. 3. 7. [Docker] : 도커 컴포즈를 사용하는 이유 도커 컴포즈를 사용하는 이유 여러 개의 컨테이너가 하나의 애플리케이션으로 동작할 때 테스트하려면 각 컨테이너를 하나씩 생성해야 한다. docker run --name mysql -d alicelk106/composetest:mysql mysqld docker run -d -p 80:80 \\ --link mysql:db --name web \\ alicek106/composetest:web apachectl -DFOREGROUND 아파치 웹 서버 컨테이너와 mysql 컨테이너를 생성한다. 여러 컨테이너로 구성된 애플리케이션을 구축하기 위해 run 명령어를 여러번 사용해야 하지만 테스트 하기가 번거롭다. 이를위해 도커 컴포즈(Docker Compose)는 컨테이너를 이용한 서비스의 개발과 CI를 위해 여러.. 2022. 3. 7. [Docker] : service 제약 설정 docker service create 명령에 —constraint 옵션을 추가해 서비스의 컨테이너가 할당될 노드의 종류를 선택할 수 있다. 다른 방법으로는 노드의 ID나 호스트 이름, 도커 데몬의 라벨로 제약 조건을 설정할 수도 있다. node.labels 제약조건 docker service create --name label_teat \\ --constraint 'node.labels.storage == ssd' \\ --replicas=5 \\ ubuntu:14.04 \\ ping docker.com docker node update 명령어로 설정해 줄 수 있다. 여러 노드에 라벨이 설정되어 있으면 매니저 노드의 스케줄러는 해당 노드들을 대상으로 컨테이너를 할당하는 스케쥴링을 진행한다. 만약 제한 .. 2022. 3. 7. [Docker] : 노드 라벨 추가하기 노드에 라벨을 추가는 노드 분류와 비슷하다. 라벨은 키-값 형태를 가지고 있고 특정 노드에 라벨을 추가하면 서비스를 할당할 때 컨테이너를 생성할 노드의 그룹을 선택하는 게 가능하다. docker node update \\ --label-add storage=ssd \\ swarm-worker1 swarm-worker1 노드 라벨을 storage=ssd로 설정해 storage라는 키에 ssd라는 값을 설정해 준다. docker node inspect --pretty swarm-worker1 docker node inspect 명령으로 확인할 수 있다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 3. 7. [Docker] : 노드 AVAILABILITY변경하기 노드 AVAILABILITY변경하기 docker node ls 구축한 스웜 클러스터의 노드를 확인한다. 모든 노드의 STATUS 항목이 Ready, AVAILABILITY항목이 Active인 것을 알 수 있다. Active Active 상태는 새로운 노드가 스웜 클러스터에 추가되면 기본적으로 설정되는 상태로서, 노드가 서비스의 컨테이너를 할당받을 수 있음을 의미한다. docker node update \\ --availability active \\ swarm-worker1 Active 상태가 아닌 노드를 Acitve 상태로 변경한다. Drain 스웜 매니저의 스케줄러는 컨테이너를 해당 노드에 할당하지 않는다. 보통 매니저 노드에 설정하는 상태지만 노드에 문제가 생겨 일시적으로 사용하지 않는 상태로 설정.. 2022. 3. 7. [Spring Boot] : ExceptionResolver사용하기(2) DefaultHandlerException에 대해 공부했다. DefaultHandlerException는 스프링 내부에서 발생하는 예외를 해결하는데 파라미터 바인딩 시점에 타입이 맞지 않아 생기는 500오류를 HTTP 상태 코드 400오류로 바꿔준다. @GetMapping("/api/default-handler-ex") public String defaultException(@RequestParam Integer data) { return "ok"; } DefaultHandlerExceptionResolver.handleTypeMismatch를 보면 response.sendError()를 통해 문제를 해결한다. sendError(400)을 호출했기 때문에 WAS에서다시 오류 페이지를 내부 요청하게 된다... 2022. 3. 7. [TIL] : 131 일일 배움을 위한 Today I Learned ! Docker 여러 타입의 볼륨 생성과 오버레이 네트워크에 대해 공부했다. 2022.03.06 - [Server & System/Docker] - [Docker] : 사용자 정의 오버레이 네트워크 2022.03.06 - [Server & System/Docker] - [Docker] : 서비스 디스커버리 2022.03.06 - [Server & System/Docker] - [Docker] : volume 타입의 볼륨 생성 2022.03.06 - [Server & System/Docker] - [Docker] : bind 타입의 볼륨 생성 2022.03.06 - [Server & System/Docker] - [Docker] : 스웜 모드에서 볼륨의 한계점.. 2022. 3. 6. [Docker] : 스웜 모드에서 볼륨의 한계점 서비스를 할당받을 수 있는 모든 노드가 볼륨 데이터를 가지고 있어야 해서 스웜 클러스터에서 볼륨을 사용하기 어렵다. 스웜 모드에서는 도커 볼륨이나 호스트와의 볼륨 사용이 적합하지 않은 기능일 수도 있다. 해결하기 위해 어느 노드에서도 접근 가능한 퍼시스턴트 스토리지(Persistent Storage)를 사용하는 것이다. 퍼시스턴트 스토리지는 호스트와 컨테이너와 별개로 외부에 존재해 네트워크로 마운트 할 수 있는 스토리지이다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 3. 6. [Docker] : bind 타입의 볼륨 생성 bind 타입의 볼륨 생성 바인드 타입은 호스트와 디렉터리를 공유할 때 사용된다. 공유 될 호스트의 디렉터리를 설정해야 하므로 source 옵션을 반드시 명시해야 한다. docker service create --name ubuntu \\ --mount type=bind, source=/root/host, target=/root/container \\ ubuntu:14.04 \\ ping docker.com 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 3. 6. [Docker] : volume 타입의 볼륨 생성 volume 타입의 볼륨 생성 스웜 모드에서 도커 볼륨을 사용하는 서비스를 생성하기 위해 —mount 옵션의 type 값에 volume를 지정해 줘야한다. docker service create --name ubuntu \\ --mount type=volume, source=myvol, target=/root \\ ubuntu:14.04 \\ ping docker.com type에 volume를 적어준다. source는 사용할 볼륨, target은 컨테이너 내부에 마운트 될 디렉터리의 위치이다. docker service create --name ubuntu \\ --mount type=volume, target=/root \\ ubuntu:14.04 \\ ping docker.com source 옵션을.. 2022. 3. 6. [Docker] : 서비스 디스커버리 같은 컨테이너를 여러 개 만들어 사용할 때 문제가 되는 부분은 컨테이너 생성의 발견(Service Discovery)와 없어진 컨테이너 감지인데 스웜 모드는 서비스 발견 기능을 자체적으로 지원한다. docker network create -d overlay discovery 서비스가 사용할 오버레이 네트워크를 생성한다. docker service create --name server \\ --replicas 2 \\ --network discovery \\ alicek106/book:hostname docker service create --name client \\ --network discovery \\ alicek106/book:curl \\ ping docker.com 서비스 두 개를 생성한다. .. 2022. 3. 6. [Docker] : 사용자 정의 오버레이 네트워크 사용자 정의 오버레이 네트워크 스웜 모드는 자체 키-값 저장소를 가지고 있어 사용자 정의 오버레이 네트워크를 생성하고 사용할 수 있다. docker network create \\ --subnet 10.0.9.0/24 \\ -d overlay \\ myoverlay -d 명령어로 네트워크 드라이버를 overlay로 설정하고 —subnet 옵션으로 오버레이 네트워크의 서브넷을 10.0.9.0으로 설정했다. 이렇게 설정한 네트워크의 이름은 myoverlay가 된다. docker network ls 명령어로 생성한 오버레이 네트워크를 확인한다. 새롭게 생성한 오버레이 네트워크의 SCOPE가 swarm으로 설정되어 있는데 이것은 스웜 클러스터에서만 사용할 수 있는 네트워크라는 뜻이고 매니저 노드에서 docker.. 2022. 3. 6. [Spring Boot] : ExceptionResolver 사용하기(1) ExceptionResolver 사용하기(1) 스프링 부트가 기본적으로 제공하는 ExceptionResolver는 HandlerExceptionResolverComposite에 ExceptionHandlerExceptionResolver → ResponseStatusExceptionResolver → DefaultHandlerExceptionResolver 순으로 등록된다. ExceptionHandlerExceptionResolver는 @ExcpetionHandler을 처리한다. ResponseStatusExceptionResolver는 HTTP 상태 코드를 지정한다. DefaultHandlerExceptionResolver는 스프링 내부 기본 예외츨 처리한다. @ResponseStatus(code = .. 2022. 3. 6. [TIL] : 130 일일 배움을 위한 Today I Learned ! Spring Boot API 예외처리 중 HandlerExceptionResolver에 대해 조금 더 공부했다. 2022.03.05 - [Framework/Spring Boot] - [Spring Boot] : HandlerExceptionResolver 활용하기 Docker 도커 스터디 진도에 맞춰 공부를 진행했다. 2022.03.05 - [Server & System/Docker] - [Docker] : config 사용하기 2022.03.05 - [Server & System/Docker] - [Docker] : 도커 스웜 네트워크 2022.03.05 - [Server & System/Docker] - [Docker] : ingress 네트워크 20.. 2022. 3. 5. [코딩 스터디 2기] : 1주차 지난 방학 때 스터디원을 모집해서 진행했던 게 도움이 많이 되어서 개강 후에도 새로 인원을 모집해서 진행하게 되었다. 첫 주차부터 지난주에 공부했던 내용을 공유해 왔고, 발표하게 되었다. 나는 toDoList를 작성하기 때문에 그것에 대한 페이지 링크를 걸어서 공유했는데 다음부터는 그 중에서 따로 정리해서 올리는 게 좋을 것 같기도 하다. 근데 내가 아직 공부를 하면서 설명을 할 정도는 또 아니라서 애매한 것 같지만 어쨌든.. 다음주에는 감명받은 기술 하나 선택해서 설명해 보는 쪽으로 할 수 있도록 생각해 봐야겠다. 다음주에 있을 SQLD 시험과 책 진도 스터디, 스프링 부트에 대해 공부했고 지금 생각보다 변수인 부분이 도커 스터디인데 책 진도를 나가긴 해야 하는데 점점 뒤로 갈 수록 난이도 상승에다가 .. 2022. 3. 5. 이전 1 ··· 16 17 18 19 20 21 22 ··· 51 다음 반응형