Journey to Security 132

[Docker] commit을 활용한 커스텀 이미지 생성

공식 Docker Hub에서 제공하는 bare image(기본 이미지)에 필요한 패키지를 설치하고, 해당 상태를 보존하여 새로운 이미지로 생성하는 과정을 다룬다.이는 CI/CD 파이프라인의 기초가 되는 작업이기도 하다.1. 베이스 컨테이너 환경 구성예: Rocky Linux 8 이미지를 기반으로 컨테이너를 실행하고, git 패키지를 설치# Rocky Linux 실행 및 bash 진입docker run -it --name "rocky8-1" rockylinux:8 bin/bash# 패키지 매니저를 통한 Git 설치 (컨테이너 내부)[root@9fb87d881e0b /]# yum update && yum -y install git[root@9fb87d881e0b /]# git --versiongit vers..

[Docker] 다양한 명령, 옵션 살펴보기: 리소스 정리, 이미지 태그 + CLI 출력 포맷팅

리소스 정리컨테이너와 이미지의 의존성(Dependency) 문제와 이를 해결하기 위한 삭제 명령어를 배워보자.1. 컨테이너와 이미지의 의존성 관계Docker에서 컨테이너는 이미지를 기반으로 생성된 인스턴스다. 따라서 특정 이미지를 참조하는 컨테이너가 (정지 상태라 할지라도) 존재한다면, 해당 이미지는 삭제할 수 없다.다음 예시를 통해 도커 이미지를 삭제하려고 할 때 conflict가 생기는 상황에 대해 알아보자. docker rmi ubuntu:14.04Error response from daemon: conflict: unable to remove repository reference "ubuntu:14.04" (must force) - container f567a76b46c1 is using its ..

[Docker] 컨테이너 생명주기(lifecycle)와 PID 1 프로세스 아키텍처

Docker 컨테이너는 독자적인 운영체제가 아니라, 호스트 OS 커널 위에서 격리된 '프로세스 트리(Process Tree)'일 뿐이다. 이 트리의 최상단에 위치한 PID 1 프로세스는 컨테이너의 생존을 결정하는 절대적인 기준이 된다. 다음 명령을 예시로 들어보자. # Case A: Batch Job (일회성 작업) - 즉시 종료docker run ubuntu:latest echo "Hello world..."Hello world...# 결과: 프로세스가 할 일을 마치고 Exit Code 0을 반환하며 종료됨 -> 컨테이너 중지# Case B: Blocking Process (지속 실행) - 영구 실행docker run -d nginx:latest tail -f /dev/null# 결과: 프로세스가 파..

[Docker] 런타임 모드와 표준 스트림(stdio) 제어

런타임은 이미지를 빌드하는 시점이 아니라, 실제 프로세스로 실행하는 시점이다. 따라서 docker run 명령을 내리는 순간, 컨테이너 프로세스의 입출력 통로를 호스트 터미널에 연결할지(Foreground), 백그라운드로 돌릴지(Background/Detached) 결정해야 한다.Nginx를 도커로 실행하는 예시를 통해 이 두 모드의 차이를 확인해볼 수 있다.# Case 1: Detached Mode (백그라운드 실행)docker run -d --name my_web1 nginx9703b16ec053... (Container ID만 출력하고 즉시 쉘 프롬프트 반환)# Case 2: Foreground Mode (포그라운드 실행)docker run --name my_web2 nginx...2025/12/2..

[Docker] 이미지 레이어링(Image Layering)이란?

Docker 이미지는 단일 파일이 아닌, 읽기 전용(Read-Only)의 여러 레이어(Layer)가 적층된 구조다. 이를 구현하기 위해 Union File System (UnionFS) 또는 OverlayFS 기술이 사용된다. 예를 들어 우분투 14.04 이미지를 다운받아서 컨테이너를 생성하는 과정을 살펴보자. 터미널에 다음과 같이 실행하면 아래와 같은 로그가 뜬다.docker run -it ubuntu:14.04 /bin/bashdocker run -it ubuntu:14.04 /bin/bashUnable to find image 'ubuntu:14.04' locally14.04: Pulling from library/ubuntu2e6e20c8e2e6: Pull complete 0551a797c01d:..

[Docker] 우분투에 도커 설치하기

리눅스(Ubuntu) 환경에서 도커(Docker)를 설치하는 방법과, 필수 설정부터 컨테이너 실행 및 종료 원리까지 알아보자. 1. 사전 준비 및 필수 패키지 설치가장 먼저 시스템 패키지 목록을 최신화하고, 도커 설치에 필요한 의존성 패키지들을 설치한다. apt-transport-https는 패키지 관리자가 HTTPS를 통해 저장소에 접근할 수 있게 해주며, curl과 gnupg는 GPG 키 인증을 위해 필요하다. *** 여기서 GPG 키 인증은 쉽게 말해 "내가 받은 이 파일이 원작자가 배포한 그 순수한 파일이 맞다(무결성)" 는 것을 수학적으로 증명하여 안전하게 설치하기 위한 절차이다.GPG(GNU Privacy Guard) 키 인증은 공개키 암호화 방식을 이용해 데이터의 암호화, 복호화, 디지털..

[Docker] 도커의 아키텍처와 동작 원리, 기술 동향 정리

현대 소프트웨어 개발과 배포의 표준이 된 도커(Docker)는 애플리케이션을 컨테이너라는 표준화된 유닛으로 패키징하여 환경에 구애받지 않고 실행할 수 있게 해주는 플랫폼이다. 도커의 기본 구성 요소와 동작 방식, 그리고 컨테이너 오케스트레이션 도구인 쿠버네티스(Kubernetes)와의 관계를 알아보자.1. 도커의 기본 아키텍처 (Docker Architecture)도커는 클라이언트-서버 모델을 기반으로 하며 크게 세 가지 구성 요소로 나뉜다.도커 클라이언트 (Docker Client): 사용자가 도커와 상호작용하는 기본 창구다. CLI(Command Line Interface)를 통해 docker build, docker pull, docker run 등의 명령어를 입력하면 도커 데몬으로 API 요청을 ..

도커(Docker)와 컨테이너 기술의 개념 이해하기

많은 기업들은 인프라 운영의 효율성을 위해 클라우드 네이티브 환경을 구축하고 있으며, 그 중심에는 도커(Docker)와 쿠버네티스(Kubernetes)가 있다.대규모 엔터프라이즈 환경에서 사용되는 기술 스택을 중심으로, 도커와 컨테이너 기술의 핵심 개념과 운영 생태계에 대해 알아보자.1. 기업형 클라우드 인프라의 예기업들은 단순히 서버를 돌리는 것에 그치지 않고, 인프라 전체를 소프트웨어로 정의하고 자동화한다.가상화 및 네트워크: 물리 서버에 VMware를 설치한 후, 그 위에 OpenStack을 얹어 사내 클라우드를 구축한다. 이때 하드웨어 장비 없이 소프트웨어(스위치, 라우터)만으로 네트워크를 연결하는 SDN 기법이 활용된다.패키징 및 배포: Docker로 환경을 구성하고, Helm이라는 쿠버네티스 ..

Hadoop 클러스터 구축하기 part.3 - 멀티 노드 띄우고 파일 업로드하기

이번에는 지금까지 만든 마스터 노드 1개와 슬레이브 노드 2개로 구성된 환경에서 하둡 파일 시스템(HDFS)을 초기화하고 하둡 클라우드에 디렉토리를 생성하여 파일을 업로드하는 과정을 살펴본다. 1. 초기화 및 네임노드 포맷하둡을 재구동하기 전, 이전 실행 기록이 남아 충돌하는 것을 막기 위해 임시 디렉토리(/usr/local/hadoop/tmp)를 비우는 작업을 선행한다. master와 모든 slave 노드에서 동일하게 진행한다.공통사항: 기존 tmp 폴더를 삭제 후 재생성하고, username에게 소유권 권한을 부여rm -rf /usr/local/hadoop/tmpmkdir /usr/local/hadoop/tmpchown username: -R /usr/local/hadoop/tmp [master]HD..

Hadoop 클러스터 구축하기 part.2 - SSH 키 기반 연결, 하둡 환경 설정 및 배포

먼저저 하둡 클러스터의 핵심인 마스터 노드(Master Node)와 슬레이브 노드(Slave Node)가 하둡 분산 시스템(HDFS)에서 어떤 의미와 역할을 갖는지 알아보자. 마스터와 슬레이브의 역할 하둡은 거대한 데이터를 한 대의 컴퓨터가 아닌, 여러 대의 컴퓨터에 나누어 저장하고 처리하는 기술이다. 이를 효율적으로 관리하기 위해 시스템을 지시하는 관리자(Master)와 일꾼(Slave)으로 역할을 철저히 구분한다. 1. 마스터 노드 (Master Node) - 네임노드 (NameNode)클러스터 전체를 관리하고 통제하는 '두뇌' 역할을 한다.메타데이터 관리: 사용자가 업로드한 실제 파일 데이터는 저장하지 않는다. 대신, 그 파일이 '어떤 슬레이브 노드의 어느 위치에 저장되어 있는지'에 대한 정보(메타..