컨테이너4 2. PID 네임스페이스로 프로세스 격리하기 (심화) Go로 "컨테이너스러운" 프로세스를 만들어보자. 지난 포스팅에서 mydocker run bash 명령으로 bash를 PID 1번으로 실행할 수 있었다. 이번 편에서는 그 구조가 왜 그렇게 동작하는지, 그리고 PID 네임스페이스의 격리 효과가 정확히 무엇인지 코드와 몇 가지 실험으로 구조를 파악해보자. PID 네임스페이스PID 네임스페이스는 리눅스 커널의 네임스페이스 중 하나로, 각 프로세스가 고유한 PID 트리를 갖도록 격리시킨다. 이때 아래와 같은 특징을 볼 수 있다. 부모 네임스페이스에서 보면 자식 네임스페이스의 PID가 일반적인 번호 (예: 12345)자식 네임스페이스 안에서는 해당 프로세스가 PID 1부터 시작이 PID 1 프로세스는 네임스페이스의 init 프로세스로, 모든 자식의 조상🔍 왜 자.. 개발일기/Docker 2025. 5. 29. 1. 컨테이너 만들기 - fork/exec로 컨테이너 프로세스 분리하기 Go로 "컨테이너스러운" 프로세스를 만들어보자. 격리Docker와 같은 컨테이너 기술에서 "격리"라는 키워드는 컨테이너가 제공하는 가장 핵심적인 개념 중 하나이다. 세부적으로 하나하나 그 장점을 나열해보자.1. 🔐보안 (Security)격리를 통해 각 컨테이너는 서로 다른 컨테이너나 호스트 시스템과 직접적으로 상호작용할 수 없다. 만약 컨테이너 내부에서 시스템에 악영향을 주는 코드가 실행되더라도, 다른 컨테이너나 호스트 전체로 피해가 전이되는 것을 막을 수 있다.2. 🧩자원 분리 (Resource Separation)CPU, 메모리, 네트워크, 디스크 I/O 등 시스템 자원을 분리하여 사용할 수 있다. 특정 컨테이너가 무한히 자원을 사용하는 것을 방지하고, 다른 컨테이너에 영향을 주지 않도록 보장할 .. 개발일기/Docker 2025. 5. 28. 도커와 도커 사이의 통신(도커 네트워크) Spring boot 프로젝트를 로컬에서 바로 실행하지 않고 docker로 프로젝트 디렉터리를 마운트하여 컨테이너로 실행하면서 이슈를 하나 마주쳤다. postgre SQL 을 실행하고 있는 또 다른 Docker 컨테이너와 Spring boot 프로젝트가 커넥션을 맺지 못한다. 무슨 일이었는지 알아보자.일단 해결부터문제의 원인과 해결은 정말 간단하다. 우선 같은 로컬 환경에서 실행 중인 Docker 컨테이너끼리는 localhost:{port}로 직접 통신할 수 없다. Docker는 각 컨테이너가 독립적인 네트워크 네임스페이스를 가지므로, localhost는 각 컨테이너의 내부 주소를 의미하게 되어 서로를 인식하지 못하게 된다. 따라서, 브릿지 네트워크를 사용하여 두 컨테이너가 같은 사용자 정의 브릿지 네트.. 개발일기/Docker 2024. 11. 4. 8. 자바 컨테이너는 무엇을 의미하나요? 데이터의 ‘저장’이라는 의미로 가장 먼저 등장한 자료구조는 배열이다. 배열을 사용하면 동일한 성질을 가진 primitive type 또는 Reference type의 값을 저장할 때 활용할 수 있다. 하지만 이 글을 읽는 사람들은 대부분 알다시피 배열에는 무시할 수 없는 큰 단점이 있다. ‘크기가 정해지면 바뀔 수 없다.’라는 배열의 성질은 자료 저장의 확장성을 크게 저해하는 요소이다. 이를 해결하기 위해 다양한 자료구조들을 지원하려는 목적으로 등장한 것이 java.util 라이브러리의 container 클래스이다. 주의!!!! 스윙에 사용되는 java.awt.container와 다르다. 대표적인 기본 타입으로 List, Set, Map 등이 있는데 이들은 container라는 클래스에 물리적으로 묶여있.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 8. 1. 이전 1 다음