프로그래밍
-
도커 다섯번째프로그래밍/Docker 2024. 1. 14. 20:04
도커 네트워크 도커네트워크는 커널의 네트워크 스택의 하위, 상위에는 네트워크 드라이버를 생성한다. 도커 네트워크 = 리눅스 네트워크라고 볼 수 .있다 도커 네트워크 아키텍처는 CNM(Container Newworking Model) 이라하는 인터페이스 위에 구축한다. 그래서 OS 및 인프라에 구애받지 않고 구축할 수 있다. CNM (Container Newworking Model) CNM은 립네트워크를 통해 모델이 구현된것. 도커 엔진을 통해 립네트워크를 관리하며, 도커네트워크는 브리지 네트워크이므로 도커엔진을 통해 관리가 된다. 리눅스 네트워킹 빌딩 블록 리눅스 브리지 네트워크 네임스페이스 veth pair 및 iptables 복잡한 네트워크 정책을 위한 전달규칙, 네트워크 분할 및 관리도구 제공 리눅..
-
도커 네번째프로그래밍/Docker 2024. 1. 14. 02:50
docker container CLI 컨테이너 격리기술 컨테이너 CLI 작업이 수행될때는 -i 와 -t를 붙여 -it 라는 옵션을 많이 사용 --restart always 를 사용하면 예기치못한 종료에도 다시 재실행됨. (쿠버네티스는 restart always가 기본값) docker exit code 0과 143은 정상종료 docker attach 와 exec의 차이 attach는 내부에서 돌아가는 로그, 실제 수행되는 작업의 정보를 출력할 때 사용 exec는 내부에 들어가서 무언가 작업을 수행할 때 사용 docker import 시에 export로 만들어진 이미지는 단순히 컨테이너의 파일시스템을 아카이빙해서 만든 이미지이기 때문에 컨테이너 run 후 실행할 명령(CMD)이 요구된다. 해결방법은 아래처럼..
-
도커 세번째프로그래밍/Docker 2024. 1. 4. 00:15
도커이미지의 특징 1. 바이너리, 라이브러리 및 설정값 포함 2. 변경되는 상태값을 보유하지않음 stateless 3. 변하지 않음 immutable, RO (Read Only) 도커 이미지 받을때 팁 프로젝트 요구사항이 특별히 debian에 초점을 맞추지 않았다면 alpine 권장 만약 debian에 초점이 되어있다하더라도 특정 설정의 제약이 없다면 slim 키워드가 있는 버전을 쓰는것을 권장 이미지 구조 이미지는 기본적으로 계층구조(Layer)이다. 레이어로 만드는 이유 -> 기존의 이미지 재활용 가능 (공간효율성, 모듈화 가능) 여러개의 layer를 하나의 FS로 사용하게 해주는 기능을 UFS (union filesystem) 이라고 한다. docker image inspect [이미지이름] doc..
-
도커 두번째프로그래밍/Docker 2024. 1. 2. 21:27
도커 주의사항 동작 중인 컨테이너를 exit하면 컨테이너가 꺼진다. 그렇지만 일반적인 종료가 아닌 강제종료 이기 때문에 exit는 권장하지 않음 컨트롤키를 꾹 누른 상태에서 P Q를 누르면 컨테이너가 계속 동작하는 채로 밖으로 나가진다 그리고 만약 exit를 하여 컨테이너를 꺼버렸다면 docker start 컨테이너ID 또는 컨테이너이름으로 다시 실행 시킨 후 docker exec -it 컨테이너ID 또는 컨테이너 이름 bash mysql을 예로 들면 /etc/init.d/mysql start mysql -uroot -p 이렇게 다시 접속 가능 Virtual Ethernet 은 docker0 과 컨테이너 사이에 존재하는 터널 LXC가 가진 네트워크 기술 중 하나로 네임스페이스가 있는데 그 네임스페이스에 ..
-
도커프로그래밍/Docker 2023. 12. 31. 23:43
CICD. 더 나아가 쿠버네티스까지의 학습을 위해 패캠 강의를 구매하여 도커를 공부하기 시작했다. 첫 글은 도커의 기초를 작성하였다. 도커의 코어 5가지 1. 이미지 2. 컨테이너 3. 네트워크 4. 리소스 매니지먼트 5. 볼륨 컨테이너 어플리케이션을 언제든 실행 가능 하도록 필요한 요소를 하나의 런타임 환경으로 패키징한 논리적인 공간 어플리케이션과 필요 요소를 하나로 패키징하여 실행하게 만든 운영시스템을 가상화한 경량의 격리된 프로세스 -> microVM 이라고도 함 -> OS 수준의 가상화 제공 -> 독립성을 갖기 때문에 다른 컨테이너에 영향을 주지않는 stateless 환경 특징 1. 컨테이너는 최소한의 이미지를 통해 실행되므로 경량이다. 2. 어떤 환경에서든 동작가능하기에 이식성을 갖고 있다. 컨..
-
[MVC] Model은 어디로 갔을까?프로그래밍/Spring 2023. 11. 22. 19:01
스프링 기초강의를 보면 항상 나오는 것이 Model 이다. 하지만 여기서 본 이후로 지금까지 단 한번도 본 적도 없으며, 사용해 본적도 없는데 스프링에서 가장 중요하다고 할 수 있는 MVC 패턴 그 중 하나임에도 왜 쓰이지 않는 것일까? MVC란? MVC C 요청받음 -> Model 에서 비즈니스로직을 사용하여 데이터 저장 -> V 로 전달 현재 많이 쓰이는 3계층 아키텍처는 C 요청받음 -> service에서 비즈니스로직을 굴리고 repository를 통해 DB 활용 -> http 응답으로 전달 으로 변하였다. View는 프론트엔드로 넘어가고 프론트엔드에게 데이터전달을 위해 Http를 사용하여 데이터를 보내주는 것이다. Model이 안보이는 이유 최근에는 MVC 패턴이 더 구체화되고 발전하였기 때문에 ..
-
스프링 TMI. 영속성컨텍스트에서 준영속상태가 누적된다면?프로그래밍/Spring 2023. 11. 15. 15:37
영속성컨텍스트를 복습하던 중 이러한 의문이 들었다 . 준영속상태에서 merge를 할 경우 복사된 데이터가 반환된다. 그러면 기존의 데이터는 어떻게 되는가? 기존 준영속 상태의 엔티티 이 엔티티는 여전히 준영속상태를 유지하며, 새로운 영속성 컨텍스트에는 속하지 않는다. 새로운 영속 상태의 엔티티 merge 메소드의 반환값으로 들어온 엔티티. 그렇다면 이러한 merge가 계속 반복되면 준영속상태의 엔티티가 쌓일텐데 데이터의 누적으로 인한 문제가 생기지 않게 하려면 저데이터들을 지워줘야하는게 아닐까? 어떻게 지우지? 사고의 흐름 em.close를 해서 영속성컨텍스트를 닫아버리면 지워지나? 실행결과 close를 해도 지워지지 않았다. 하지만 나의 궁금증은 쓸모없는 궁금증이었다. 요약해서 말하자면 준영속상태의 데..