도커5 4. Mount 네임스페이스로 파일시스템 분리하기 Go로 "컨테이너스러운" 프로세스를 만들어보자. 지금까지 PID, UTS 네임스페이스를 활용하여 프로세스 ID와 호스트 명을 격리하였다. 이번엔 파일시스템을 분리하여 컨테이너 안에서 진짜 루트 디렉터리가 다르게 보이도록 만들어보자. 이를 위해 Mount 네임스페이스를 활용할 것이다. 🔍 Mount 네임스페이스란?Mount?리눅스에서는 디스크나 외부 장치를 어떤 디렉터리 경로에 연결해야만 접근할 수 있다. 이 과정을 "mount"라고 부른다.$ sudo mount /dev/sdb1 /mnt/usb$ ls /mnt/usb 사진/ 문서/ 영화/리눅스는 하나의 거대한 트리 구조(/) 안에 모든 저장 장치, 파티션, 네트워크 파일시스템 등을 "붙여서" 사용하게 된다. C:\또는 D:\와 같이 드라이브가 분리.. 개발일기/Docker 2025. 5. 30. 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. Docker로 Sonarqube 설치 및 실행(Spring & react.js + ts) SonarQube소스 코드 품질 관리 도구로, 소나 소스(SonarSource)에서 개발하여 오픈소스로 관리되고 있는 툴이다. 정적 코드 분석, 코딩 규칙 준수, 버그 및 취약점 탐지, 코드 복잡성 측정 등의 기능을 제공하고 또한 다양한 프로그래밍 언어, 프레임워크, 개발 도구와 통합되어 사용할 수 있다.소나큐브를 사용함으로 개발과정에서 놓친 소스 코드 품질 문제를 식별하고 해결하기 위한 통찰력을 얻을 수 있다. 이를 통해 개발 프로세스에서 발생할 수 있는 보안, 에러 등 잠재적인 위험을 사전에 예방하고 코드의 유지 관리성을 향상할 수 있다.현재, Community 버전은 무료로 사용할 수 있으며, 커뮤니티에서 다양한 지원 및 업데이트가 제공되고 있다. 더 고도화된 기능을 사용하고 싶다면 Develope.. 개발일기/Docker 2024. 10. 28. 이전 1 다음