본문 바로가기
관리자

분류 전체보기

(963)
도커 교과서(엘튼 스톤맨, 심효섭) - 16. 이미지 최적화, 환경 변수 설정 관리 이미지를 최적화하는 것은 이미지의 용량을 최소화하고 보안 위험을 줄일 수 있다. 1. 이미지 최적화 이미지를 확인하고 관리하는 명령어로 다음 명령어들을 사용할 수 있다. docker system df # 현재 환경에서의 이미지, 컨테이너, 볼륨, 캐시 등 상황 표시 docker system prune # 현재 사용하지 않는 이미지 레이어나 빌드 캐시를 비워줌 컨테이너나 이미지 레이어는 잠시 사용 중이지 않을 수도 있으므로 docker system prune 명령어는 신중히 사용해야한다. rm 명령어는 용량을 줄여주지 않는다. FROM diamol/base CMD echo app- && ls app && echo docs- && ls docs COPY . . RUN rm -rf docs 이미지에서 불필요한..
[비공개] Weekly Report - 23/05/01~23/05/07, 1044일차 보호되어 있는 글입니다.
도커 교과서(엘튼 스톤맨, 심효섭) - 15. 다중 아키텍처 빌드 1. 다중 아키텍처 지원이 필요한 이유 이 교재의 맨 처음 글에서 도커는 가상 머신과 다르게, 실행하고 있는 컴퓨터와 운영체제는 공유하면서 IP, host, 드라이브를 개별적으로 갖는다고 했었다(architecture-specific). 따라서 도커의 이미지 빌드 및 실행은 대상 컴퓨터의 운영 체제로 어떤 아키텍처를 갖느냐에 영향을 받게 된다. arm64, amd64 등 여러 아키텍처에 따라 개별적인 관리가 필요하다. 클라우드에서만 하더라도 AWS에서 ARM 아키텍처를 사용하여 가상 머신을 열고 노드로 컨테이너를 구동하면 AMD 프로세서를 사용하는 경우에 비해서 단가가 절반 정도로 저렴하다고 한다. 그리고 IoT 기반의 프로세서에서 동작하게 할려는 경우 라즈베리파이처럼 ARM 프로세서를 사용하는 아키텍처..
도커 교과서(엘튼 스톤맨, 심효섭) - 14. 도커 원격 접속, 보안과 context 1. 도커 API 접속 엔드포인트 도커 엔진에 접근하여 여러 작업들을 할려면 도커 API에 요청을 해야된다. 그리고 기본적으로 도커 API는 로컬 채널에만 열려있다. 다시 말해 본인의 컴퓨터로만 본인 컴퓨터의 도커 엔진에 접근할 수 있다. 비보안 HTTP로 도커 엔진 접근해보기 비보안 HTTP 접근 설정은 위험하다. 아무나 내 컴퓨터의 도커 엔진에 인증없이 접근하여 비트코인 채굴 등의 서비스를 컨테이너로 띄워버릴 수도 있다! 그냥 실습만해보고 설정을 원래대로 돌려놔야한다. 원격으로 내 컴퓨터의 도커 엔진에 접속하는 연습을 위해 HTTP 접근을 허용해본다. 도커 데스크탑의 설정 > General 부분에서 Expose daemon on tcp://localhost:2375 without TLS라는 체크박스에..
[에러] 도커 교과서(엘튼 스톤맨, 심효섭) - 13. 지속적 통합(CI) 파이프라인 구축. Gogs, 젠킨스 1. 도커로 CI 작업하기 CI란 CI는 배포가 가능한 결과물(artifact)을 코드로부터 만들어내는 파이프라인이다. 이 파이프라인에는 빌드, 테스트, 패키징 등이 포함된다. 코드 변경이나 특정 시각마다 CI 절차가 실행되도록 자동화할 수 있다. 도커를 이용하여 CI 인프라 구축 배포하고자하는 프로그램을 도커로 이미지화하면 기술 스택에 상관없이 똑같은 과정을 거칠 수 있기 때문에 CI 절차의 일관성을 확보할 수 있다. 깃허브, 애저 데브옵스 등 여러 CI를 지원하는 매니지드 서비스가 있으나, 컨테이너 내부에서 CI 인프라를 구축할 수 있도록 도커를 이용하여 빌드를 할 수도 있다. 이렇게 하면 조직 내부 보안을 유지할 수도 있고 인터넷이 다운된 상황에서도 내부적으로 CI를 진행할 수 있다. 2. CI 구..
[TIL] 😎 MYSQL 필드 최대 길이 정의 varchar 255 vs 191 varchar 255 이유 MYSQL에서 필드의 최대 길이를 정의할 때 varchar(255)로 지정하는게 일반적이였다. 이것은 참조 링크에 따르면 MYSQL에서 메모리 용량을 8비트(256)에 맞추고 오래된 database와 호환하기 위해서 등이였다고 한다. 그리고 MYSQL에서 varchar로 된 필드를 indexing하기 위한 최대 용량을 767 byte로 잡아놨었다. 이것은 utf-8 기준이였고 767/3 = 255.666...이 되기 때문에 varchar 255로 정의하는게 관례였다. 3으로 나누는 이유는 utf-8 기준으로 모든 글자들이 3바이트에 포함되었기 때문이었다. varchar 191 이유 그러다가 이모지 🚀까지 포함하는 utf8mb4 collation 규칙이 적용되면서 한 글자에 4바..
[링크] could not initialize proxy - no Session Service 레이어에서 Entity를 가져올 때 발생할 수 있다. Entity에 접근해서 JPA의 Fetch 설정이 LazyLoading(주로 1:N으로 연결된 필드) 설정인 경우 서비스 레이어 -> 컨트롤러 레이어에서 프록시 객체를 넘겨서 발생할 수 있다. 아래 참조 글에 따르면 이것은 프록시 객체를 가져오는 것도 트랜잭션 단위로 이루어지기 때문이다. 서비스 레이어에서는 StudentDto내에 School 엔티티를 프록시로 들고 있어도 되지만, 그대로 서비스 레이어를 끝내고 다른 레이어로 넘어가면 세션이 끝나버려서 프록시로 들고 있던 School 엔티티의 값을 참조하지 못하게 된다. 서비스 레이어에서 모든 프록시 객체들을 개별 DTO로 변환하는 것이 추천된다. Eager 로딩할 수도 있겠으나 N+1 ..
[비공개] Weekly Report - 23/04/24~23/04/30, 1036일차 보호되어 있는 글입니다.