본문 바로가기
반응형

전체 글1065

[Docker] : docker_gwbridge 네트워크 docker network ls | grep docker 오버레이 네트워크를 사용하지 않는 컨테이너는 기본적으로 존재하는 브리지 네트워크를 사용해 외부와 연결하지만 오버레이 네트워크는 이와 다른 브리지 네트워크인 docker_gwbridge 네트워크와 함께 상요된다. docker_gwbridge 네트워크는 외부로 나가는 통신 및 오버레이 네트워크의 트래픽 종단덤(VTEP) 역할을 담당하게 된다. docker_gwbridge 네트워크는 컨테이너 내부의 네트워크 인터페이스 카드 중 eth1과 연결된다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 3. 5.
[Docker] : 오버레이 네트워크 docker ps --format "table {{.ID}}\\t{{.Status}}\\t{{.Image}}" docker exec 컨테이너ID ifconfig 명령어로 컨테이너 내부에서 ifconfig 명령어를 실행해 가상 네트워크 인터페이스를 출력한다. docker ps --format "table {{.ID}}\\t{{.Status}}\\t{{.Image}}" docker exec 컨테이너ID ifconfig 컨테이너마다 eth0, eth1, lo가 할당 된 것을 확인할 수 있고 swarm-manager에서 생성도니 컨테이너와 swarm-worker1에서 생성된 컨테이너 IP 주소가 차례로 할당됐다는 것이다. ingress 네트워크는 오버레이 네트워크 드라이버를 사용하는데 여러개의 도커 데몬을 하나.. 2022. 3. 5.
[Docker] : ingress 네트워크 ingress 네트워크는 스웜 클러스터를 생성하면 자동으로 등록되는 네트워크다. 스웜 모드를 사용할 때만 유효하다. docker network ls | grep ingress 매니저 노드, 스웜 클러스터에 등록된 노드라면 전부 ingress 네트워크가 생성된다. docker service create --name hostname \\ -p 80:80 \\ --replicas=4 \\ alicek106/book:hostname 위 이미지는 컨테이너의 호스트 이름, 즉 임의로 할당된 16진수를 출력하는 PHP 파일이 들어있는 웹 서버이다. docker ps --format "table {{.ID}}\\t{{.Status}}\\t{{.Image}}" 각 노드에서 명령어로 컨테이너 ID를 확인한다. 어떤 노드의.. 2022. 3. 5.
[Docker] : 도커 스웜 네트워크 docker network ls 명령어로 네트워크 목록을 확인할 수 있다. 스웜 모드는 여러 개의 도커 엔진에 같은 컨테이너를 분산해 할당하기 때문에 각 도커 데몬의 네트워크가 하나로 묶인 네트워크 풀이 필요하다. 또, 서비스를 외부로 노출했을 때 어느 노드로 접근을 하더라도 해당 서비스의 컨테이너에 접근할 수 있게 라우팅 기능이 필요하다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 3. 5.
[Docker] : config 사용하기 secret 사용과 거의 비슷하다. docker config create registry-config config.yml 레지스트리의 설정 파일을 registry-config라는 이름의 config로 저장한다. docker config ls data 항목이 있는 것을 확인할 수 있다. echo Data부분적기 | base64 -d config는 입력된 값을 base64로 인코딩해 저장하고, base64 명령어를 통해 디코딩해 원래 값을 확인할 수 있다. docker service create --name yml_registry -p 5000:5000 \\ --config source=registry-config, target=/ect/docker/registry/config.yml \\ registry:.. 2022. 3. 5.
[Spring Boot] : HandlerExceptionResolver 활용하기 HandlerExceptionResolver 활용하기 예외 발생 → WAS → 오류 페이지 찾는다 → 다시 /error 호출 이 과정은 복잡하다. ExceptionResolver를 통해 예외가 발생했을 때 깔끔하게 해결이 가능하다. if (id.equals("user-ex")) { throw new UserException("사용자 오류"); } ApiExceptionController에 user-ex에 대한 코드를 넣어주어 호출 시 UserException이 발생하도록 했다. try { if (ex instanceof UserException) { log.info("UserException resolver to 400"); String acceptHeader = request.getHeader("acc.. 2022. 3. 5.
[TIL] : 129 일일 배움을 위한 Today I Learned ! Spring Boot API 예외처리 공부를 하고 있는 중 HandlerExceptionResolver에 대해 공부를 하게 되었다. 아직 다듬지 않아서 다음 강의에서 더 배울 것 같다. 2022.03.04 - [Framework/Spring Boot] - [Spring Boot] : HandlerExceptionResolver 시작하기 Docker 도커 스터디 진도에 맞게 공부했다. 도커 서비스에 대해 공부하기 시작했다. 2022.03.04 - [Server & System/Docker] - [Docker] : 스웜 모드 서비스 개념 2022.03.04 - [Server & System/Docker] - [Docker] : 서비스 생성하기 2022.03... 2022. 3. 4.
[Docker] : secret 사용하기 secret을 생성하려면 docker secret create 명령어를 사용한다. echo qwer1234 | docker secret create my_mysql_password - my_mysql_password라는 이름의 secret에 qwer1234라는 값을 설정한다. 파일의 내용을 터미널에 출력해 이를 secret으로 가져올 수 있다. 지금은 echo를 통해 입력했다. docker secret ls secret를 조회하면 password가 출력되지 않는다. secret는 매니저 노드 간에 암호화된 상태로 저장된다. 이런 secret 파일은 컨테이너에 배포된 뒤에도 파일 시스템이 아닌 메모리에 저장되서 컨테이너가 삭제될 때 secret도 삭제된다. docekr service create \\ --.. 2022. 3. 4.
[Docker] : 서비스 컨테이너에 설정 정보 전달하기 : config, secret 이미지에 내장된 값을 쉽게 변경할 수 없기 때문에 확장성과 유연성이 떨어지게 된다. 이것을 해결하기 위해 docekr run -v 옵션을 통해 호스트에 위치한 설정 파일이나 값을 볼륨으로써 컨테이너에 공유한다. docker run -d --name yml_registry \\ -p 5002:5000 \\ --restart=always \\ -v $(pwd)/config.yml:/etc/docker/registry/config.yml \\ registry:2.6 도커 레지스트리를 생성해 준다. docker run -d \\ --name wordpressdb_hostvolume \\ -e MYSQL_ROOT_PASSWORD=password \\ -e MYSQL_DATABASE=wordpress \\ -v /.. 2022. 3. 4.
[Docker] : 서비스 롤링 업데이트 스웜 모드는 롤링 업데이트를 자체적으로 지원한다. docker service create --name myweb2 \\ --replicas 3 \\ nginx:1.10 테스트를 하기 위해 서비스를 생성한다. docker service update \\ --image nginx:1.11 \\ myweb2 이미지를 업데이트 하려면 update 명령어의 —image 옵션을 설정하면 된다. 서비스 내 컨테이너 목록을 확인하면 컨테이너 이미지가 변경된 것을 체크할 수 있다. docker service create \\ --replicas 4 \\ --name myweb3 \\ --update-delay 10s \\ --update-parallelism 2 \\ nginx:1.10 레플리카를 10초 단위로 업데이트.. 2022. 3. 4.
[Docker] : 스웜 모드의 서비스 장애 복구하기 복제 모드로 설정된 서비스 컨테이너가 정지하거나 특정 노드가 다운되면 스웜 매니저는 새로운 컨테이너를 생성해 자동으로 복구한다. docker ps docker rm -f myweb.1.d383jl79pix2b9kcrqukzpwoj 컨테이너를 조회하고 NAMES를 입력해 삭제해 본다. 지금 적어둔 것은 책에서 제공하는 예시이다. docker service ps myweb docker service ps 명령어를 통해 새로운 컨테이너가 생성된 것을 확인할 수 있다. 특정 노드가 다운됐을 때 역시 위와 같은 방식으로 작동한다. service docker stop 테스트를 위해 노드 하나의 도커 데몬 프로세스를 종료해 고장난 상태로 만들어 본다. docker node ls 명령어를 통해 노드의 STATUS가 D.. 2022. 3. 4.
[Docker] : global 서비스 생성하기 서비스 모드는 두 가지가 있는데 복제 모드와 글로벌 모드이다. 글로벌 서비스는 스웜 클러스터 내에서 사용할 수 있는 모든 노드에 컨테이너를 반드시 하나씩 생성하기 때문에 레플리카 셋의 수를 따로 지정하지 않는다. 글로벌 서비스는 스웜 클러스터를 모니터링하기 위한 에이전트 컨테이너 등을 생성해야 할 때 유용하다. docker service create --name global_web \\ --mode global \\ nginx docker service create 명령어에 —mode global을 추가해 생성할 수 있다 —mode 옵션을 따로 설정하지 않으면 기본으로 복제 모드를 사용한다. docker service ls docker service ps global_web 글로벌 서비스의 상태를 확인해.. 2022. 3. 4.
[Docker] : nginx 웹 서버 서비스 생성하기 —replica 옵션을 추가하고 Nginx 웹 서버 이미지를 이용해 서비스를 외부에 노출 시켜본다. docker service create --name myweb \\ --replicas 2 \\ -p 80:80 \\ nginx 레플리카 컨테이너를 정의하고 이름을 설정하고 컨테이너 80번 포트를 각 노드의 80번 포트로 연결하는 서비스를 생성한다. docker service ps myweb 생성된 컨테이너를 확인해 보면 스웜 클러스터 내의 노드 중 하나를 선택해 80번 포트로 접근, Nginx 웹 서버가 구동되는 것을 확인할 수 있다. docker service scale myweb=4 명령어를 통해 레플리카셋의 수를 늘이거나 줄일 수 있다. docker service ps myweb 컨테이너 목록을 다.. 2022. 3. 4.
[Docker] : 서비스 생성하기 docker service 명령어로 시작할 수 있다. docker service create \\ ubuntu:14.04 \\ /bin/sh -C "while true; do echo hello world; sleep 1; done" ubuntu:14.04 이미지로 서비스 내 컨테이너를 생성하고 컨테이너가 시작할 때 명령어로 “hello world”를 출력하는 셸 명령어를 설정한다. 서비스 내의 컨테이너는 detached 모드로 -d를 넣어 동작할 수 있는 이미지를 사용해야 한다. docker service ls 서비스를 생성했다면 서비스의 목록을 확인해 방금 생성한 서비스가 정상적으로 구동되고 있는지 확인해 본다. 스웜 클러스터 내의 서비스 목록을 확인하는 명령어이다. docker service ps .. 2022. 3. 4.
[Docker] : 스웜 모드 서비스 개념 도커 클라이언트에서 사용하는 명령어가 제어하는 것은 컨테이너다. 하지만 스웜 모드에서 제어하는 단위는 컨테이너가 아닌 서비스(Service)이다. 서비스는 이미지에서 생성된 컨테이너의 집합이고 서비스를 제어하면 해당 서비스 내의 컨테이너에 같은 명령이 수행된다. 서비스 내 컨테이너는 1개 이상 존재하고 각 컨테이너는 워커 노드와 매니저 노드에 할당이 되는데 이런 컨테이너들을 Task(태스크)라고 한다. 즉, 서비스 내의 컨테이너를 태스크라고 한다. 예를 들어 이미지로 서비스를 생성하고 컨테이너 수를 3개로 정하면 스웜 스케줄러가 적합한 노드를 선정하고 노드에 컨테이너를 분산 할당하게 된다. 이렇게 같이 생성된 컨테이너를 레플리카라고 하고 생성된 레플리카의 수 만큼 컨테이너가 스웜 클러스터 내에 존재해야 .. 2022. 3. 4.
[Spring Boot] : HandlerExceptionResolver 시작하기 HandlerExceptionResolver 시작하기 IllegalArgumentException을 처리하지 못 해 컨트롤러 밖으로 넘어가는 일이 생길 때 HTTP 상태 코드를 400으로 처리하고 싶다고 가정하고 실습을 진행했다. if (id.equals("bad")) { throw new IllegalArgumentException("잘못된 입력 값"); } 먼저 ApiExceptionController를 수정해 주었다. HandlerExceptionResolver를 사용하면 컨트롤러 밖으로 던져진 예외를 해결하고 동작 방식을 변경할 수 있따. 줄여서 ExceptionResolver라고 부른다. @Slf4j public class MyHandlerExceptionResolver implements Ha.. 2022. 3. 4.
[생각정리] : 부끄러운 기부 최근에 나는 매우 부끄러운 기부를 했다.. 어느 날, 매 번 눈팅하던 개발자 커뮤니티에서 어떤 분이 이력서 피드백을 해주신다고 글을 올렸다. 이제 슬슬 이력서도 써야 하고 내 인생 첫 정규 취업을 해야 하기 때문에 부탁드려볼까 하고 글을 자세히 보니 기부를 해서 영수증을 보내주면 제대로 된 첨삭을 해주시겠다고 하셨다. 그게 아니라면 이력서를 공개하는 쪽으로 허락해 달라고 하셨는데 뭔가 개인 정보가 넘쳐나는 이력서다 보니 공개가 꺼려져 한국소아암재단에 적은 돈 5,000원을 기부했다. 일단 이게 너무 부끄러운 나의 기부 내역이다. 왜 부끄러울까..생각을 해보면 간단하게 5천원을 기부하고 나는 바로 이력서 피드백을 해주신다는 분에게 메일을 보냈다. 근데 메일을 보내면서 그냥 갑자기 선한 마음, 돕고 싶은 마.. 2022. 3. 3.
[TIL] : 128 일일 배움을 위한 Today I Learned ! Docker 도커 스웜 모드와 스웜 클래식에 대해 공부하고 있다. 2022.03.03 - [Server & System/Docker] - [Docker] : 도커 파이썬 라이브러리 2022.03.03 - [Server & System/Docker] - [Docker] : 도커 스웜을 사용하는 이유 2022.03.03 - [Server & System/Docker] - [Docker] : 스웜 클래식과 도커 스웜 모드 2022.03.03 - [Server & System/Docker] - [Docker] : 도커 스웜 모드 2022.03.03 - [Server & System/Docker] - [Docker] : 도커 스웜 모드의 구조 Spring Boot.. 2022. 3. 3.
[Docker] : 도커 스웜 모드의 구조 도커 스웜 모드의 구조 스웜 모드는 매니저 노드와 Worker(워커) 노드로 구성되어 있다. 워커 노드는 컨테이너가 생성되고 관리되는 도커 서버, 매니저 노드는 워커 노드를 관리하기 위한 도커 서버로 매니저 노드에도 컨테이너가 생성될 수 있는 만큼 매니저 노드는 워커 노드의 역할을 포함하고 있다. 매니저 노드는 1개 이상 있어야 하고 워커 노드는 없을 수도 있다. 매니저 노드만으로도 클러스터를 구성할 수 있다. 매니저 수를 늘린다 해서 스웜 클러스터 성능이 좋아지는 것은 아니다. 스웜 모드는 매니저 노드의 절반 이상에 장애가 생겨 정상적으로 작동하지 못 할 경우 장애가 생긴 매니저 노드가 복구될 떄까지 클러스터의 운영을 중단한다. 스웜 매니저는 가능한 홀수 개로 구성하는 게 좋다. 📖 ← [ 시작하세요!.. 2022. 3. 3.
[Docker] : 도커 스웜 모드 스웜 모드 스웜 모드는 별도 설치 과정이 필요가 없다. 도커 엔진 자체에 내장되어 있기 때문이다. docker info | grep Swarm 명령어로 도커 엔진의 스웜 모드 클러스터 정보를 확인할 수 있다. 처음에는 단일 도커 서버에서 사용해서 스웜 모드가 비활성화 상태로 설정되어 있을 수 있다. 2022. 3. 3.
[Docker] : 스웜 클래식과 도커 스웜 모드 스웜 클래식과 도커 스웜 모드 스웜 클래식과 스웜 모드는 여러 대의 도커 서버를 하나의 클러스터로 만들어 컨테이너를 생성하는 여러 기능을 제공한다. 컨테이너를 득정 도커 서버에 할당도 가능하고 유동적으로 서버도 확장할 수 있다. 스웜 클러스터에 등록된 서버의 컨테이너를 쉽게 관리할 수 있다. 도커 스웜 모드가 실제 운영 환경에서 많이 쓰이지는 않지만 서버 클러스터에서 컨테이너를 어떻게 다루는지 기초 지식을 쌓기엔 좋다. 도커 스웜에는 두 종류가 있는데 하나는 도커 버전 1.6 이후부터 사용할 수 있는 컨테이너로서의 스웜이고 두 번째에는 도커 1.12 이후부터 사용할 수 있는 도커 스웜 모드이다. 두 종류를 구분하기 위해 첫 번째를 스웜 클래식, 두 번째를 스웜 모드라고 부른다. 스웜 클래식과 스웜 모드의.. 2022. 3. 3.
반응형