분류 전체보기 203

IP 주소와 서브넷 마스크: 클래스 기반에서 클래스리스 기반으로...

네트워크를 공부할 때 반드시 알아야 하는 개념이 바로 IP 주소 할당 방식이다.초기 클래스 기반의 비효율적인 방식에서 현재의 효율적인 클래스리스 체계로 어떻게 변화해 왔는지, 그리고 실무에서 필수적인 서브넷 계산법까지 알아보자. IP 주소 체계를 이해하려면 먼저 서브넷 마스크를 알아야 한다.IP 주소는 하나의 덩어리가 아니라, '어느 동네(네트워크)'의 '어느 집(호스트)'인지를 나타내는 두 부분으로 구성된다. 1. 서브넷 마스크(Subnet Mask)란?마스크(Mask)는 '가린다'는 뜻이다.서브넷 마스크는 총 32비트의 연속된 1과 연속된 0으로 이루어져 있다. 1로 표시된 부분은 네트워크 영역, 0으로 표시된 부분은 호스트 영역을 의미한다.따라서 32비트로 이루어진 IPv4 주소에 32비트 서브넷 ..

[Docker] 리소스 모니터링 도구 - events, stats, system, cAdvisor

도커 환경을 운영하다 보면 단순히 컨테이너를 실행하고 종료하는 것을 넘어, 현재 시스템 내부에서 어떤 일이 벌어지고 있는지, 리소스는 얼마나 사용되고 있는지 파악해야 할 때가 있다.특히 다수의 컨테이너를 관리하거나 성능 최적화가 필요할 때 모니터링은 필수다. 도커 기본 모니터링 명령어(events, stats, system)와 구글이 만든 컨테이너 모니터링 도구인 cAdvisor를 활용하는 방법을 알아보자. 1. 실시간 이벤트 스트림 확인: docker events도커 데몬은 컨테이너의 생성, 시작, 정지, 삭제 등 모든 생명주기 변경 사항을 '이벤트(Event)'로 처리한다. docker events 명령어는 이러한 이벤트를 실시간 스트림으로 보여주는 도구로, 윈도우 서버의 '이벤트 뷰어'와 유사한 역..

리눅스 환경에서 Node.js/Express로 웹 서버 구동하기

가상화 기술과 클라우드 환경이 보편화되면서 웹 애플리케이션의 구조는 거대한 모놀리식(Monolithic) 형태에서 가볍고 유연한 마이크로서비스 형태(MSA)로 변화하고 있다.특히 Docker 컨테이너나 Kubernetes Pod 환경에서는 애플리케이션이 얼마나 '가볍게' 구동될 수 있는지가 관건이다.이러한 트렌드 속에서 기존의 Apache/Nginx와 Tomcat 조합보다 훨씬 경량화된 Node.js와 Express.js가 백엔드 개발의 핵심 도구로 자리 잡았다.리눅스(Ubuntu) 환경에서 Node.js 개발 환경을 구축하고, 버전 호환성 문제를 해결하며 간단한 웹 서버를 띄우는 과정을 단계별로 정리한다.1. 환경 구축: NVM을 이용한 Node.js 설치리눅스 시스템의 패키지 매니저(apt)를 통해 ..

Journey to CS/웹 2026.01.08

[Docker] 파이썬 코드로 도커 제어하기: Docker SDK 활용 기초

일반적으로 도커를 사용할 때는 터미널에서 docker run, docker ps와 같은 CLI 명령어를 주로 사용한다.하지만 복잡한 MSA(Microservices Architecture) 환경을 구축하거나, 자체적인 인프라 관리 도구를 개발해야 할 때는 쉘 스크립트만으로 제어하는 데 한계가 있다.이때 유용한 것이 프로그래밍 언어를 통한 도커 제어다.Docker는 Python, Go, Java 등 다양한 언어에 대한 SDK를 제공하며, 이를 통해 컨테이너의 생성, 실행, 종료 등을 프로그래밍 로직 안에서 처리할 수 있다. 이번에는 Python의 docker 라이브러리를 사용하여 Nginx 컨테이너를 생성하고 실행해보자.1. 동작 원리 및 아키텍처먼저 파이썬 코드가 어떻게 도커 데몬을 제어하는지 이해할 필..

[Docker] 이미지 커밋(commit)과 Docker Hub 공유(push)

이번에는 베이스 이미지를 실행하여 파일을 생성하고, 이를 커밋(commit)하여 새로운 이미지로 만든 뒤 Docker Hub에 배포(push)하고 다른 환경에서 내려받아(pull) 확인하는 전체 라이프사이클을 살펴본다.Workflow작업의 전체 흐름은 로컬 환경에서 컨테이너를 변경하고 이미지를 생성하는 단계(build/commit), 원격 저장소로 업로드하는 단계(push), 그리고 타 환경에서 이를 실행하는 단계(run/pull)로 나뉜다. 1단계: 베이스 이미지 실행 및 변경사항 발생가장 먼저 베이스가 될 OS 이미지를 실행하고, 컨테이너 내부에서 파일 생성 등의 작업을 수행한다.여기서는 ubuntu:16.04를 사용했다.docker run -it --name comm_test1 ubuntu:16...

[Docker] Private Registry 구축 및 이미지 배포 워크플로우

도커를 사용하다 보면 Docker Hub와 같은 퍼블릭 레지스트리가 아닌, 사내망이나 개인 환경에서만 접근 가능한 Private Registry(사설 저장소)가 필요한 수 있다.보안상의 이유나 네트워크 대역폭 절약, 혹은 배포 속도 향상을 위해서다. 이번에는 공식 registry 이미지를 사용하여 로컬 환경에 사설 저장소를 구축하고, 서로 다른 두 개의 호스트간에 이미지를 푸시(Push)하고 풀(Pull)하는 전체 과정을 알아본다.특히 SSL 인증서 없이 HTTP로 통신할 때 발생하는 문제와 이를 해결하기 위한 데몬 설정(daemon.json)에 대해서도 알아보자.1. Private Registry 컨테이너 구동가장 먼저 할 일은 이미지를 저장할 레지스트리 서버를 띄우는 것이다.도커는 공식적으로 레지스트..

[Docker] Dockerfile을 이용해서 이미지 빌드하고 실행하기 (3) - 웹 페이지 배포

이번에는 단순한 텍스트 파일 대신, 스타일과 스크립트가 포함된 index.html을 작성해서 간단한 웹 페이지를 배포한다.1) index.html 생성작업 경로(/home/username/dockerfile)에 nano 편집기를 열어 index.html 파일을 작성하고 저장한다.ChatGPT 등을 이용해 간단한 CSS와 JavaScript가 포함된 HTML 파일을 작성한다. 예시: 🐳 Hello Docker! 이미지가 컨테이너에서 실행 중입니다. 상태 확인하기 시스템 정상 작동 중! ✅ 2) Dockerfile2 작성FROM ubuntu:16.04RUN apt up..

[Docker] Dockerfile을 이용해서 이미지 빌드하고 실행하기 (2) - Apache

이어서, nginx처럼 완성된 웹 서버 이미지가 아닌 ubuntu 베어(bare) 이미지에서 시작하여 Apache를 설치하고 구성해본다. 또한 컨테이너 내부에 html 파일을 생성하고, 호스트 작업 디렉토리에 만든 html 파일을 컨테이너 내부 디렉토리로 복사(COPY)해서 각각의 html 파일을 띄워보는 것도 테스트 해본다.1) 호스트에서 html 파일 만들기COPY 지시어를 통해 호스트의 html 파일을 컨테이너 내부로 복사하기 위해 다음과 같이 작업 디렉토리에 미리 파일을 생성해 둔다. 명령어:root@host:/home/username/dockerfile# echo "This is from Outside" > out-test.html 2) Dockerfile1 작성현재 작업 디렉토리가 /home/..

[Docker] Dockerfile을 이용해서 이미지 빌드하고 실행하기 (1) - Nginx

도커파일(Dockerfile)은 단순히 이미 만들어진 도커 이미지를 가져다 쓰는 것을 넘어서, 목적에 맞는 어플리케이션 환경을 직접 구성하고 배포하는 것을 가능하게 해준다. Dockerfile이 무엇인지, 어떤 문법으로 작성되는지 살펴보고, 실제 Nginx와 Apache 웹 서버를 커스텀 이미지로 빌드해보자.1. Dockerfile이란?Dockerfile은 도커 이미지를 생성하기 위한 설정 파일이다. 이미지가 어떤 베이스 위에서 만들어지고, 어떤 소프트웨어가 설치되며, 실행 시 어떤 명령을 수행할지 정의하는 청사진과 같다.이러한 작업을 Dockerizing(도커라이징)이라고 부르며, 이는 인프라 구성을 코드로 관리하는 IaC(Infrastructure as Code)의 시발점이자 CI/CD(지속적 통합/..

[Docker] Volume을 활용한 정적 웹사이트 배포와 컨테이너 간 데이터 공유

웹 서비스를 개발하고 배포할 때 가장 기본이 되는 것은 정적 파일(HTML, CSS, JS)을 웹 서버에 띄우는 것이다.Docker를 사용하면 Nginx와 같은 웹 서버를 순식간에 실행할 수 있다.하지만 보다 확장성 있는 아키텍처를 위해서는 단순히 컨테이너를 띄우는 것에서 나아가, 호스트의 파일을 컨테이너와 연결하고(Bind Mount), 여러 컨테이너가 동일한 데이터를 바라보게 설정(--volumes-from)할 수 있어야 한다. 간단한 포트폴리오 웹사이트 예제를 통해 Docker Volume의 활용법을 알아보자. 1. 실습 환경 준비: 정적 파일 준비먼저 웹 서버에 띄울 소스 코드가 필요하다.구글에 "free bootstrap template"을 검색해서 Bootstrap 기반의 간단한 포트폴리오 템..