Journey to Security/클라우드 44

[Docker] 포트 포워딩(port forwarding) (feat. Nginx)

경량 웹 서버인 Nginx를 컨테이너로 구동하고, 외부(Host)에서 접근할 수 있도록 네트워크 포트를 매핑해보자.1. 포트 매핑 (Port Mapping)컨테이너는 격리된 네트워크 환경을 가지므로, 외부에서 접속하려면 호스트의 포트와 컨테이너의 포트를 연결해야 한다.Command: -p [Host_Port]:[Container_Port]설명: 호스트의 8000번 포트로 들어오는 트래픽을 컨테이너의 80번 포트(Nginx 기본 포트)로 전달한다.docker run -p 8000:80 -d nginx:latest이 때 docker ps를 실행해서 보이는 0.0.0.0:8000->80/tcp는 IPv4의 모든 인터페이스에서의 접근을 허용함을 의미한다. 포트 포워딩 트래픽 흐름 Docker 컨테이너는 기본적..

[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..

1 2 3 4 5