
컨테이너 기술은 이제 개발과 배포에 없어서는 안 될 존재가 되었죠. 그런데 컨테이너, 그냥 띄우기만 하면 안전할까요? 이번 글에서는 Docker 컨테이너 격리의 핵심 기술인 Namespace, Cgroup, Capabilities를 하나하나 뜯어보며 컨테이너 보안을 어떻게 확보하는지 알아보고, 실제 활용법까지 꼼꼼하게 짚어보겠습니다.
📑 목차
1. Docker 컨테이너 격리 기술 심층 분석: Namespace, Cgroup, Capabilities 이해와 활용
컨테이너 기술은 애플리케이션 개발 및 배포 방식을 혁신했습니다. Docker는 이러한 컨테이너 기술을 대표하는 플랫폼입니다. 컨테이너는 애플리케이션과 필요한 모든 종속성을 패키징하여 일관된 환경에서 실행할 수 있도록 합니다. 본 글에서는 Docker 컨테이너의 핵심 격리 기술인 Namespace, Cgroup, Capabilities를 심층적으로 분석합니다. 이를 통해 컨테이너 보안을 강화하고, 시스템 자원을 효율적으로 관리하는 방법을 제시합니다.
→ 1.1 컨테이너 보안, 왜 격리가 중요할까요?
컨테이너 격리는 컨테이너 보안의 핵심 요소입니다. 격리가 제대로 이루어지지 않으면 컨테이너 내부의 문제가 호스트 시스템 전체에 영향을 미칠 수 있습니다. 이는 보안 취약점을 악용한 공격자가 컨테이너를 통해 호스트 시스템에 침투할 수 있는 가능성을 의미합니다. 따라서 컨테이너 환경에서는 강력한 격리 메커니즘을 구축하는 것이 매우 중요합니다.
격리는 컨테이너가 다른 컨테이너 또는 호스트 시스템의 리소스에 접근하는 것을 제한합니다. 예를 들어, 컨테이너 내에서 실행되는 프로세스가 호스트 시스템의 파일 시스템을 직접 수정하는 것을 방지합니다. 또한, 컨테이너 간의 네트워크 통신을 제어하여 불필요한 접근을 차단합니다. 이러한 격리 메커니즘은 컨테이너 환경의 안정성과 보안성을 높이는 데 기여합니다.
컨테이너 격리의 중요성을 보여주는 사례로, 2025년에 발생한 한 웹 애플리케이션 서비스 장애를 들 수 있습니다. 공격자는 취약한 컨테이너를 통해 호스트 시스템에 침투했습니다. 그 결과, 데이터베이스 서버에 접근하여 중요 정보를 탈취했습니다. 이 사건은 컨테이너 격리가 제대로 이루어지지 않을 경우 발생할 수 있는 심각한 보안 문제를 보여줍니다. 이러한 사고를 예방하기 위해서는 컨테이너 격리 기술에 대한 깊이 있는 이해와 적용이 필수적입니다.
2. Docker 격리 기술 3가지 핵심 요소 파헤치기
Docker 컨테이너 격리 기술은 컨테이너들이 서로 영향을 주지 않고 안전하게 실행될 수 있도록 보장합니다. Namespace, Cgroup, Capabilities는 Docker 격리를 가능하게 하는 핵심 요소입니다. 이 세 가지 기술은 컨테이너가 호스트 시스템의 자원을 분리된 환경에서 사용하도록 지원합니다. 이를 통해 컨테이너 간의 충돌을 방지하고 보안성을 강화합니다.
→ 2.1 Namespace: 자원 격리의 기본
Namespace는 프로세스, 네트워크, 마운트 지점 등 시스템 자원을 격리하는 역할을 합니다. 각 컨테이너는 자신만의 Namespace를 가지며, 다른 컨테이너의 자원에 접근할 수 없습니다. 이는 마치 각 컨테이너가 독립된 가상 운영체제처럼 작동하도록 만들어 줍니다. 예를 들어, PID Namespace는 각 컨테이너가 PID 1번부터 시작하는 독립적인 프로세스 트리를 갖도록 합니다.
Namespace는 다음과 같은 종류가 있습니다.
- PID Namespace: 프로세스 ID 격리
- Network Namespace: 네트워크 인터페이스, 라우팅 테이블 격리
- Mount Namespace: 마운트 지점 격리
- UTS Namespace: 호스트 이름, 도메인 이름 격리
- IPC Namespace: 프로세스 간 통신 격리
- User Namespace: 사용자 ID, 그룹 ID 격리
이러한 Namespace들을 통해 컨테이너는 호스트 시스템의 다른 부분과 완전히 분리되어 실행됩니다.
→ 2.2 Cgroup: 자원 사용 제한
Cgroup(Control Groups)는 컨테이너가 사용할 수 있는 CPU, 메모리, 디스크 I/O 등의 자원을 제한합니다. 이를 통해 특정 컨테이너가 시스템 자원을 과도하게 사용하여 다른 컨테이너의 성능에 영향을 미치는 것을 방지합니다. Cgroup은 컨테이너의 자원 사용량을 모니터링하고 관리하는 데에도 유용합니다. 예를 들어, 특정 컨테이너의 메모리 사용량을 1GB로 제한할 수 있습니다.
Cgroup은 계층적인 구조를 가지며, 각 계층은 특정 자원 유형에 대한 제한을 정의합니다. Docker는 Cgroup을 사용하여 컨테이너의 자원 사용량을 효율적으로 관리합니다. 2026년에는 Cgroup v2가 더욱 널리 사용될 것으로 예상되며, 이는 자원 관리의 효율성을 더욱 향상시킬 것입니다.
→ 2.3 Capabilities: 권한 제어
Capabilities는 리눅스 시스템에서 root 권한을 세분화하여 컨테이너에 필요한 최소한의 권한만 부여하는 기술입니다. 전통적으로 프로세스는 root 또는 일반 사용자 권한으로 실행되었지만, Capabilities는 root 권한을 여러 개의 작은 권한으로 분리합니다. 이를 통해 컨테이너가 불필요한 권한을 가지는 것을 방지하고, 보안 위험을 줄일 수 있습니다. 예를 들어, 컨테이너가 네트워크 설정을 변경해야 하는 경우 CAP_NET_ADMIN Capability만 부여할 수 있습니다.
Capabilities는 다음과 같은 이점을 제공합니다.
- 보안 강화: 최소 권한 원칙 적용
- 유연성: 필요한 권한만 선택적으로 부여
- 관리 용이성: 권한 관리의 세분화
Docker는 기본적으로 안전한 Capabilities 집합을 컨테이너에 제공하며, 필요에 따라 추가하거나 제거할 수 있습니다.
📌 핵심 요약
- ✓ ✓ Docker 격리의 핵심 요소는 Namespace, Cgroup, Capabilities
- ✓ ✓ Namespace는 컨테이너의 자원 격리를 위한 기본 기술
- ✓ ✓ Cgroup은 컨테이너 자원 사용 제한 및 관리 담당
- ✓ ✓ Capabilities는 root 권한을 세분화하여 최소 권한 부여
3. Namespace 격리: 리소스 접근 제어 마스터하기
Namespace는 Docker 컨테이너 격리의 핵심 기술 중 하나입니다. Namespace는 프로세스들이 시스템 자원에 접근하는 범위를 제한합니다. 이를 통해 컨테이너 내부의 프로세스는 격리된 환경에서 실행됩니다. 다른 컨테이너나 호스트 시스템에 영향을 주지 않도록 합니다.
Namespace는 여러 종류가 존재하며, 각 종류는 특정 리소스에 대한 접근을 제어합니다. 예를 들어, PID Namespace는 프로세스 ID를 격리합니다. Mount Namespace는 파일 시스템 마운트 지점을 격리합니다. Network Namespace는 네트워크 인터페이스를 격리합니다. UTS Namespace는 호스트 이름과 도메인 이름을 격리합니다.
→ 3.1 Namespace 종류별 특징
각 Namespace는 컨테이너의 격리 수준을 높이는 데 기여합니다. PID Namespace를 통해 컨테이너는 독립적인 프로세스 트리를 가집니다. 즉, 컨테이너 내부에서는 PID 1번이 init 프로세스가 됩니다. 이는 호스트 시스템의 PID와 충돌을 방지합니다. Mount Namespace는 컨테이너가 독립적인 파일 시스템을 사용하도록 합니다. 따라서 호스트 시스템의 파일 시스템에 직접 접근할 수 없습니다.
Network Namespace는 컨테이너에 가상 네트워크 인터페이스를 제공합니다. 이를 통해 컨테이너는 독립적인 IP 주소와 라우팅 테이블을 가집니다. UTS Namespace는 컨테이너가 독립적인 호스트 이름과 도메인 이름을 가지도록 합니다. 이는 컨테이너의 네트워크 식별 정보를 격리하는 데 유용합니다.
→ 3.2 Namespace 활용 예시
웹 서버 컨테이너를 예로 들어보겠습니다. Network Namespace를 사용하여 웹 서버 컨테이너에 별도의 IP 주소를 할당합니다. 이를 통해 호스트 시스템의 네트워크 설정과 독립적으로 운영할 수 있습니다. 또한, Mount Namespace를 사용하여 웹 서버 컨테이너에 필요한 파일 시스템만 마운트합니다. 불필요한 파일 접근을 차단하여 보안을 강화할 수 있습니다. 이처럼 Namespace는 컨테이너의 격리 환경을 조성하고 보안을 강화하는 데 필수적인 기술입니다.
Namespace 격리는 컨테이너 보안의 중요한 부분입니다. 적절한 Namespace 설정을 통해 컨테이너 간의 간섭을 줄일 수 있습니다. 컨테이너가 호스트 시스템에 미치는 영향을 최소화할 수 있습니다. 따라서 컨테이너를 설계할 때 Namespace를 신중하게 고려해야 합니다.

4. Cgroup 설정으로 컨테이너 자원 효율적 관리
Cgroup(Control Group)은 컨테이너가 사용할 수 있는 자원을 제한하고 관리하는 데 핵심적인 역할을 합니다. Cgroup을 통해 CPU, 메모리, 디스크 I/O 등 시스템 자원에 대한 할당량을 설정할 수 있습니다. 이는 컨테이너가 과도하게 자원을 사용하는 것을 방지하고, 시스템 전체의 안정성을 유지하는 데 기여합니다.
→ 4.1 Cgroup 설정 항목
Cgroup은 다양한 설정 항목을 제공하여 세밀한 자원 관리를 가능하게 합니다. 다음은 주요 Cgroup 설정 항목의 예시입니다.
- cpu.shares: CPU 사용 비율을 설정합니다.
- memory.limit_in_bytes: 메모리 사용량을 제한합니다.
- blkio.weight: 블록 I/O 가중치를 설정합니다.
이러한 설정 항목들을 조합하여 컨테이너별 자원 사용량을 조절할 수 있습니다. 특정 컨테이너에 더 많은 CPU 자원을 할당하거나, 메모리 사용량을 제한하는 등의 설정이 가능합니다.
→ 4.2 Cgroup 설정 예시
Docker CLI를 사용하여 컨테이너를 실행할 때 Cgroup 설정을 적용할 수 있습니다. 예를 들어, 다음 명령어는 컨테이너의 메모리 사용량을 512MB로 제한하는 설정입니다.
docker run -m 512m --name my_container ubuntu:latest
-m 옵션은 메모리 제한을 설정하는 옵션입니다. 이 외에도 다양한 Cgroup 관련 옵션을 사용하여 컨테이너의 자원 사용량을 제어할 수 있습니다.
→ 4.3 자원 관리의 중요성
컨테이너 환경에서 자원 관리는 매우 중요합니다. 자원 관리를 소홀히 하면 특정 컨테이너가 시스템 자원을 독점하여 다른 컨테이너의 성능 저하를 초래할 수 있습니다. 또한, 예상치 못한 자원 고갈로 인해 시스템 전체가 불안정해질 위험도 있습니다. 따라서 Cgroup 설정을 통해 컨테이너의 자원 사용량을 적절하게 관리하는 것이 중요합니다.
2026년 현재, 클라우드 환경에서 컨테이너를 사용하는 기업들은 Cgroup 설정을 통해 비용 효율적인 자원 관리를 실현하고 있습니다. 예를 들어, 트래픽이 낮은 시간대에는 컨테이너의 자원 사용량을 줄여 비용을 절감하고, 트래픽이 높은 시간대에는 자원 사용량을 늘려 성능을 유지하는 방식으로 운영되고 있습니다.

5. Capabilities 조정으로 컨테이너 권한 최소화
컨테이너 보안을 강화하는 방법 중 하나는 Capabilities를 조정하여 컨테이너의 권한을 최소화하는 것입니다. Capabilities는 전통적인 root 권한을 세분화하여, 필요한 권한만 컨테이너에 부여할 수 있도록 합니다. 이를 통해 컨테이너가 손상되더라도 공격자가 시스템 전체에 영향을 미치는 것을 방지할 수 있습니다.
기본적으로 Docker는 컨테이너를 실행할 때 특정 Capabilities를 활성화합니다. 하지만 대부분의 컨테이너는 이러한 기본 Capabilities 중 일부만 필요로 합니다. 따라서 불필요한 Capabilities를 제거함으로써 공격 표면을 줄일 수 있습니다. 예를 들어, 네트워크 설정을 변경할 필요가 없는 컨테이너는 CAP_NET_ADMIN Capabilities를 제거할 수 있습니다.
→ 5.1 Capabilities 설정 방법
Docker를 사용하여 컨테이너를 실행할 때 --cap-add 옵션으로 필요한 Capabilities를 추가하고, --cap-drop 옵션으로 불필요한 Capabilities를 제거할 수 있습니다. 다음은 예시입니다.
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE --cap-add CHOWN image_name
위 명령어는 모든 Capabilities를 제거(--cap-drop ALL)한 후, NET_BIND_SERVICE와 CHOWN Capabilities만 추가합니다. NET_BIND_SERVICE는 1024번 이하의 포트에 바인딩할 수 있는 권한을 부여하고, CHOWN은 파일 소유자를 변경할 수 있는 권한을 부여합니다.
→ 5.2 Capabilities 적용 사례
웹 서버 컨테이너를 예로 들어보겠습니다. 웹 서버는 일반적으로 80번 또는 443번 포트에 바인딩해야 합니다. 이를 위해서는 NET_BIND_SERVICE Capabilities가 필요합니다. 하지만 다른 Capabilities는 필요하지 않을 수 있습니다. 따라서 다음과 같이 Capabilities를 설정하여 컨테이너의 권한을 최소화할 수 있습니다.
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE -d -p 80:80 nginx
이처럼 Capabilities를 세밀하게 조정하면 컨테이너의 보안을 크게 향상시킬 수 있습니다. 컨테이너를 실행하기 전에 필요한 Capabilities를 신중하게 고려하고, 불필요한 권한은 제거하는 것이 좋습니다. 컨테이너의 보안을 강화하여 더욱 안전한 환경을 구축할 수 있습니다.
📌 핵심 요약
- ✓ ✓ Capabilities 조정으로 컨테이너 권한 최소화
- ✓ ✓ --cap-drop ALL로 불필요한 권한 제거
- ✓ ✓ --cap-add로 필요한 Capabilities만 추가
- ✓ ✓ 웹 서버는 NET_BIND_SERVICE 권한이 필요
6. Docker 격리 설정 시 흔한 실수와 해결 방법
Docker 컨테이너를 격리하는 과정에서 여러 가지 실수가 발생할 수 있습니다. 이러한 실수는 컨테이너 보안을 약화시키고 시스템 안정성을 저해할 수 있습니다. 따라서 흔한 실수들을 이해하고 해결 방법을 숙지하는 것이 중요합니다.
→ 6.1 과도한 권한 부여
컨테이너에 불필요한 권한을 부여하는 것은 흔한 실수 중 하나입니다. 특히 Capabilities 설정 시, 필요한 권한만 부여해야 합니다. 예를 들어, --privileged 옵션을 사용하는 것은 모든 권한을 컨테이너에 부여하는 것과 같습니다. 이는 보안상 매우 위험하며, 컨테이너가 호스트 시스템에 영향을 줄 수 있습니다.
해결 방법은 Capabilities를 세밀하게 조정하는 것입니다. CAP_NET_ADMIN, CAP_SYS_ADMIN과 같이 강력한 Capabilities는 꼭 필요한 경우에만 부여해야 합니다. docker run --cap-drop ALL --cap-add NET_BIND_SERVICE ... 명령어를 사용하여 필요한 Capabilities만 추가할 수 있습니다.
→ 6.2 잘못된 Namespace 설정
Namespace는 컨테이너 격리의 핵심 요소입니다. 하지만 Namespace를 제대로 설정하지 않으면 격리가 제대로 이루어지지 않을 수 있습니다. 예를 들어, 호스트의 네트워크 Namespace를 공유하는 것은 컨테이너를 격리하는 의미가 없습니다. 이 경우, 컨테이너는 호스트의 네트워크 인터페이스를 직접 사용하고, 호스트의 다른 프로세스와 통신할 수 있습니다.
따라서 컨테이너를 실행할 때 적절한 Namespace를 설정해야 합니다. docker run --net=none 옵션을 사용하여 컨테이너에 자체 네트워크 Namespace를 생성할 수 있습니다. 또한, docker run --pid=host 옵션을 사용하면 컨테이너가 호스트의 PID Namespace를 공유하게 되어 컨테이너 격리가 약화될 수 있습니다.
→ 6.3 Cgroup 설정 누락
Cgroup은 컨테이너의 자원 사용량을 제한하는 데 사용됩니다. Cgroup 설정을 누락하면 컨테이너가 시스템 자원을 과도하게 사용하여 다른 컨테이너나 호스트 시스템에 영향을 줄 수 있습니다. 예를 들어, CPU나 메모리 제한을 설정하지 않으면 특정 컨테이너가 시스템 자원을 독점할 수 있습니다.
Cgroup을 설정하여 컨테이너의 자원 사용량을 제한해야 합니다. docker run --cpu-shares 512 --memory 1g ... 명령어를 사용하여 CPU shares와 메모리 제한을 설정할 수 있습니다. 또한, CPU 사용률 제한(--cpu-quota) 및 I/O 대역폭 제한(--device-write-bps)과 같은 고급 Cgroup 설정도 활용할 수 있습니다.
→ 6.4 보안 업데이트 미흡
Docker 이미지와 컨테이너에 대한 보안 업데이트를 소홀히 하는 것도 흔한 실수입니다. 오래된 이미지는 알려진 취약점을 포함하고 있을 수 있습니다. 따라서 정기적으로 이미지를 업데이트하고, 컨테이너를 재시작하여 최신 보안 패치를 적용해야 합니다.
docker pull 명령어를 사용하여 최신 이미지를 다운로드하고, docker build 명령어를 사용하여 이미지를 다시 빌드할 수 있습니다. 또한, 컨테이너 레지스트리에서 제공하는 자동 스캔 기능을 활용하여 이미지의 취약점을 탐지하고 해결할 수 있습니다.
→ 6.5 잘못된 볼륨 마운트 설정
볼륨 마운트는 컨테이너와 호스트 시스템 간에 파일을 공유하는 데 사용됩니다. 하지만 잘못된 볼륨 마운트 설정은 보안 문제를 야기할 수 있습니다. 예를 들어, 호스트의 루트 디렉토리를 컨테이너에 마운트하면 컨테이너가 호스트 시스템의 모든 파일에 접근할 수 있게 됩니다.
따라서 볼륨 마운트 시에는 주의를 기울여야 합니다. 필요한 파일만 컨테이너에 마운트하고, 읽기 전용(read-only) 마운트를 사용하여 컨테이너가 호스트 시스템의 파일을 변경하는 것을 방지할 수 있습니다. docker run -v /host/path:/container/path:ro ... 명령어를 사용하여 읽기 전용 마운트를 설정할 수 있습니다.
7. 컨테이너 보안 강화를 위한 실천 체크리스트
컨테이너 보안을 강화하기 위해서는 일련의 실천적인 점검 항목들을 꾸준히 확인해야 합니다. 이는 컨테이너 환경의 잠재적인 취약점을 사전에 식별하고, 적절한 보안 조치를 적용하는 데 필수적입니다. 아래는 컨테이너 보안 강화를 위한 실천 체크리스트입니다.
→ 7.1 이미지 보안 점검
- 최신 보안 패치 적용: 컨테이너 이미지를 최신 버전으로 유지하고, 보안 패치를 주기적으로 적용합니다.
- 신뢰할 수 있는 레지스트리 사용: 공식 이미지를 사용하거나, 신뢰할 수 있는 레지스트리에서 이미지를 가져옵니다.
- 불필요한 소프트웨어 제거: 이미지 크기를 줄이고 공격 표면을 최소화하기 위해 불필요한 소프트웨어를 제거합니다.
- 이미지 스캔 도구 활용: Clair, Trivy와 같은 이미지 스캔 도구를 사용하여 알려진 취약점을 탐지하고 해결합니다.
→ 7.2 런타임 보안 강화
- 최소 권한 원칙 적용: 컨테이너가 실행될 때 필요한 최소한의 권한만 부여합니다. Capabilities 조정을 통해 권한을 세분화합니다.
- Namespace 격리 활용: PID, Network, Mount Namespace 등을 사용하여 컨테이너를 격리합니다.
- Cgroup을 통한 자원 제한: 컨테이너가 사용할 수 있는 CPU, 메모리 등의 자원을 제한합니다.
- AppArmor 또는 SELinux 활용: 컨테이너의 시스템 호출을 제한하여 보안을 강화합니다.
→ 7.3 네트워크 보안 설정
- 네트워크 정책 설정: 컨테이너 간의 네트워크 통신을 제어하고, 필요한 통신만 허용합니다.
- 방화벽 설정: 호스트 방화벽을 설정하여 컨테이너로의 불필요한 접근을 차단합니다.
- 암호화 통신 사용: 컨테이너 간 통신 시 TLS와 같은 암호화 프로토콜을 사용합니다.
→ 7.4 로그 및 모니터링 강화
- 로그 수집 및 분석: 컨테이너의 로그를 중앙 집중식으로 수집하고 분석하여 이상 징후를 탐지합니다.
- 보안 모니터링 도구 활용: Prometheus, Grafana와 같은 모니터링 도구를 사용하여 컨테이너의 보안 상태를 실시간으로 감시합니다.
- 침입 탐지 시스템(IDS) 구축: 컨테이너 환경에 특화된 IDS를 구축하여 악성 행위를 탐지합니다.
→ 7.5 정기적인 보안 감사 실시
- 컨테이너 환경의 보안 설정을 정기적으로 검토하고 개선합니다.
- 최신 보안 위협 정보를 지속적으로 학습하고 대응합니다.
- 보안 사고 발생 시 대응 절차를 마련하고 훈련합니다.
예를 들어, 금융 회사의 경우 개인 정보 유출 방지를 위해 컨테이너 간 네트워크 통신을 엄격하게 제한하고 있습니다. 이를 위해 네트워크 정책을 설정하여 특정 컨테이너만 데이터베이스에 접근할 수 있도록 합니다. 또한, 모든 컨테이너의 로그를 실시간으로 분석하여 이상 징후를 탐지하고 있습니다.
이러한 실천 체크리스트를 통해 컨테이너 환경의 보안을 강화할 수 있습니다. 꾸준한 점검과 개선을 통해 안전하고 신뢰할 수 있는 컨테이너 환경을 구축하는 것이 중요합니다.
컨테이너 격리, 오늘부터 완벽하게!
Docker 컨테이너 격리 기술의 핵심인 Namespace, Cgroup, Capabilities를 이해하고 활용하는 방법을 알아보았습니다. 이제 컨테이너 격리 기술을 바탕으로 더욱 안전하고 효율적인 애플리케이션을 개발하고 배포할 수 있습니다. 오늘 배운 지식을 바탕으로 컨테이너 기술 전문가로 발돋움하세요!
📌 안내사항
- 본 콘텐츠는 정보 제공 목적으로 작성되었습니다.
- 법률, 의료, 금융 등 전문적 조언을 대체하지 않습니다.
- 중요한 결정은 반드시 해당 분야의 전문가와 상담하시기 바랍니다.
'IT' 카테고리의 다른 글
| VS Code GitLens 완전 정복, 코드 맥락 파악 및 협업 효율 극대화 5가지 팁 (0) | 2026.03.09 |
|---|---|
| 배치 파일 디버깅 완벽 가이드, 오류 원인 분석 및 해결 방법 (0) | 2026.03.09 |
| API Rate Limiting 전략, Leaky & Token Bucket 알고리즘 구현 비교 (0) | 2026.03.08 |
| Git 커밋 메시지 작성 규칙, 협업 효율 높이는 5가지 가이드 (feat. Conventional Commits) (0) | 2026.03.08 |
| 추상 팩토리 패턴, 핵심 원리부터 활용 전략까지 (2026년) (0) | 2026.03.08 |