목록분류 전체보기 (271)
전공공부
File System /var/lib/docker 폴더에 모두 이미지든 도커 파일들이 쌓입니다. 그리고, Layer 구조로 저장이 되는데요. Dockerfile을 열어서 보면 이미 Ubuntu image가 설치 되었다고 치면 이미 마주치면서 있는 계층의 것들을 다운로드하지 않습니다. 필요한 부분만 변경해서 업데이트가 될 뿐이죠. 그리고, 이러한 Dockerfile의 처리들은 Image Layer로 처리가 되고 이를 컨테이너 레이어를 만들고 글을 쓸 수 있는 레이러를 하나 더 올려서 처리 할 수 있습니다. Container Layer가 RW를하죠. 이해하기 쉽게 예제를 들겠습니다 docker build Dockerfile -t username/custom-app #이미지 레이어 생성 위 명령어로 이미지 레..
단위 테스트는 소프트웨어 개발의 중요한 부분입니다. Mockito는 Java에서 단위 테스트를 작성할 때 널리 사용되는 프레임워크 중 하나입니다. 하지만 Mockito를 사용하면서 발생할 수 있는 몇 가지 이슈가 있었고 이를 정리해봤습니다. 문제 : NullPointerException / MockitoException Cannot invoke "org.springframework.jdbc.core.JdbcTemplate.queryForObject(String, Object[], org.springframework.jdbc.core.RowMapper)" because "this.jdbcTemplate" is null 이 에러는 UserDaoImpl 클래스의 인스턴스가 생성될 때 JdbcTemplate 객..
설명 다익스트라를 사용해서 직접 각 시작점에서 시작해서 가지는 모든 곳을 체크했습니다. 또한, 처음 시작하는 곳은 내가 이미 시작 할 때 방문 한 여부를 찾는것이 아닌 다른 지점에서 처음 시작 지점을 들어오는 것을 체크하는 것이라서 그에 대한 방문 처리를 해주었습니다. 코드 package shortest_path; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class BOJ_11403 { static int[][] m..
PSA (Portable Service Abstraction) PSA (Portable Service Abstraction)는 스프링에서 서비스 추상화를 구현하는 개념입니다. 이는 특정 기술에 종속되지 않고, 일관된 인터페이스를 제공하여 서비스들을 편리하게 교체하고 테스트하기 위한 목적으로 도입되었습니다. 그렇다면 이 예제가 무엇일까요? import com.test.tester.portableServiceAdapter.dao.UserDao; import com.test.tester.portableServiceAdapter.dto.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdb..
설명 다익스트라 알고리즘을 사용했다고 생각했으나 사실 가물가물하여 이것이 다익스트라의 형태가 맞는 것인지 헷갈린다. 그저 방문 체크 여부를 하고 이전 거리로 부터 가져온 거리 웨이트 값을 더해서 이런 형태로 풀었다. 코드 package shortest_path; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class BOJ_18352 { static List[] graph; public static void main(String[] args) throws Exception{ BufferedReader in = new BufferedReader(new InputStreamReader(Sy..

Traffic (Ingress)Web -> :80 -> API :5000 -> DB :3306 API -> Web (Egress) Ingress Role : 웹 서버로 부터 들어오는 요청 Driving Egress Role : DB 응답 웹 서버로 들어온 요청의 응답 Driven Network Security 쿠버 네티스는 기본적으로 All Allowed 됩니다. 클러스터 내부 Pod 간 통신이든 뭐든요. 그래서 우리는 Web -> API -> DB 이런것이 바로 가능한 이유가 이런 이유인데요 만일, Web -> DB는 막고 싶다면 어떻게 해야 할까요? Netwok Policy를 이때 적용 합니다. Network Policy - Rules Allow Ingress Traffic From API Pod o..
Docker Security docker run ubuntu sleep 3600 Container는 Namespace 단위로 격리되고 실행된다. 그래서, 프로세서에 직접 접근해서 들어가서 ps aux 하면 PID는 1이 나올 것이고 이에 대해서 Host 범위에서 ps aux 시 그저 실행되는 하나의 컨테이너 작업으로 표시되어서 PID 31157 이런식으로 랜덤 ID가 나올 것이다. 어쨌든 말하고 싶은 것은 host의 일반 유저와 Container의 접근 권한이 다르다는걸 말하고 싶었다. docker run --privileged ubuntu 그래서, 이렇게 유저가 달라서 일반 Docker 유저는 권한을 모두 부여 받지 못한다. 따라서, 특정 명령어를 쓰기 위해서는 위와 같이 root 권한을 부여한다던지 ..

Image image는 무엇이고 이미지는 어디서 나온 것일까요? 이미지는 도커로 부터 온 것이고 library/nginx 이 사실 nginx image로 저장되는 건데 보통 유저 계정 이름이 없이 라이브러리 형태로 바로 따라오는 이미지 형태는 도커에서 공식으로 지원하기 때문에 image: nginx 처럼 쓸 수 있었습니다. 보통의 도커 패스는 이렇습니다. // Private Repository 자 그럼 도커 허브에서 내 프라이빗 레지스트리에 등록한 도커 이미지를 가져 올 수 있겠네요. docker login private-registry.io docker run private-registry.io/apps/internal-app 위와 같이 내 프라이빗 레지스트리로 부터 가져온 도커 이미지를 쓸 수 있습니..