Jinsu's Technical Blog
  • 홈
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 분류 전체보기 (250)
      • Java (18)
      • Spring Framework (33)
        • Toby's Spring 3.1 (6)
        • Spring IoC (6)
        • TDD (6)
        • Reflection (6)
        • AOP (6)
      • Spring Boot (11)
      • Spring Security (22)
      • Database (17)
        • Mysql (2)
        • JDBC (2)
        • JPA (13)
      • Build and Development Tools (3)
        • Maven (1)
        • Gradle (1)
        • Lombok (1)
      • Network (12)
      • Apache Tomcat (11)
      • Microservices Architecture (33)
      • Linux (9)
      • React (10)
      • Docker (22)
      • OAuth (10)
      • DevOps (2)
      • Git (2)
      • HTML (1)
      • CSS (1)
      • JavaScript (1)
      • Problem and Solution Guide (8)
        • Java (1)
        • Spring Framework (4)
        • Reflection (1)
        • Dynamic Proxy (1)
        • JPA (1)
      • Note-Taking (23)
  • 홈
  • 태그
  • 방명록
Docker

Spring Boot 애플리케이션 Docker로 빌드 및 실행하기

Spring Boot 애플리케이션 Docker로 빌드 및 실행하기이번 포스팅에서는 Spring Boot 백엔드 애플리케이션을 Docker를 이용해 빌드하고 컨테이너화하여 실행하는 과정을 정리합니다.1. Maven 설정 및 Jib 플러그인 추가먼저 pom.xml에 Jib 플러그인을 추가하여 도커 이미지를 생성하도록 설정합니다.pom.xml 예시 4.0.0 org.springframework.boot spring-boot-starter-parent 3.4.0 com.example licensing-service 0.0.1-SNAPSHOT License Service Example Licensing Service ..

2024. 12. 10. 17:08
Docker

Docker in Action Chapter 8

8장: Dockerfile을 통한 이미지 자동 빌드이 장에서는 Docker 이미지를 자동으로 빌드하기 위한 표준 도구인 Dockerfile을 다룹니다. 앞서 7장까지는 이미지를 수동으로 생성하는 과정을 경험하면서, 이미지와 레이어, 메타데이터의 개념을 익혔습니다. 이제는 수동 단계를 자동화하고, 코드로 관리할 수 있는 Dockerfile을 통해 더 쉽게, 더 일관성 있게, 그리고 더 유지 보수 가능하게 이미지를 빌드하는 방법을 배우게 됩니다.Dockerfile 빌드의 기본 개념Dockerfile은 텍스트 기반의 스크립트 파일로, 이미지를 빌드하기 위해 수행해야 할 커맨드와 설정을 단계별로 정의합니다. 빌더는 Dockerfile에 적힌 명령을 위에서부터 아래로 순서대로 실행하며, 각 명령은 새로운 레이어를..

2024. 12. 9. 16:51
Docker

Docker in Action Chapter 7

7장: Packaging Software in Images (이미지로 소프트웨어 패키징하기)이 장에서는 컨테이너 이미지의 빌드 과정을 수동으로 경험하고, 이미지와 레이어의 상호작용, 그리고 이미지 설계 시 고려할 점들을 다룹니다. 또한 간단한 "Hello, World" 예제에서 시작하여 실제 소프트웨어(Git)를 설치해보며, 컨테이너 파일 시스템을 변경하고 그 결과를 새로운 이미지로 커밋하는 과정을 체계적으로 이해할 수 있습니다.핵심 목표: 컨테이너 내부에서 소프트웨어를 설치하거나 변경하고, 이를 커밋(commit)하여 새로운 이미지를 빌드하는 실습 과정을 통해 이미지를 수동 생성하는 워크플로를 익힙니다. 이미지 레이어, 파일 시스템 변화, 그리고 이미지 크기 관리 문제를 심층적으로 이해하고, 더 나..

2024. 12. 9. 16:49
Docker

Docker in Action Chapter 6

6장: Limiting risk with resource controls (자원 제어를 통한 위험 제한)이전 장들에서 네임스페이스와 가상화된 리소스를 이용해 애플리케이션을 격리하는 방법을 배웠다면, 이번 장에서는 시스템 자원을 좀 더 구체적으로 제어하는 방법에 초점을 둡니다. 컨테이너에서 CPU, 메모리 등 자원 할당량을 조정하고, 사용자 권한(UID/GID)과 특수 권한(capabilities), SELinux/AppArmor 보안 정책 등을 통해 실행 환경을 강화할 수 있습니다. 이를 통해 실패나 공격 발생 시 영향을 최소화하고, 컨테이너가 호스트와 다른 컨테이너에 미치는 위험을 줄일 수 있습니다.자원 할당량 설정 (Resource Controls)메모리 제한(-m 또는 --memory): 컨테이너가..

2024. 12. 9. 16:46
Docker

Docker in Action Chapter 5

5장: Single-host networking (단일 호스트 네트워킹)이전 장에서 우리는 컨테이너의 실행 환경, 스토리지 관리 등을 다루었다면, 이번 장에서는 컨테이너 네트워킹에 집중합니다. 대부분의 애플리케이션은 네트워크를 통해 통신하므로, 컨테이너화된 애플리케이션의 네트워크 접근 방식, 서비스 노출, 컨테이너 간 통신을 이해하는 것은 매우 중요합니다.기본 개념: 프로토콜, 인터페이스, 포트프로토콜(Protocol): 소프트웨어 간 통신을 위한 “언어”입니다. 예: HTTP, TCP, UDP 등네트워크 인터페이스(Interface): IP 주소를 갖는 네트워크 장치. 로컬호스트(lo), 이더넷(eth0) 등이 있으며, 각 인터페이스는 특정 네트워크 위치를 의미합니다.포트(Port): 인터페이스 위에서..

2024. 12. 9. 16:29
Docker

Docker in Action Chapter 4

4장: Working with storage and volumes (스토리지와 볼륨 다루기)이전 장들에서는 주로 이미지를 통한 소프트웨어 실행에 집중했다면, 이번 장에서는 컨테이너 실행 시 발생하는 데이터 관리 문제에 집중합니다. 실제 운영 환경에서는 애플리케이션이 로그, 설정 파일, 업로드된 콘텐츠, 데이터베이스 데이터 등 다양한 형태의 동적 데이터를 다룹니다. Docker를 사용하면 이 데이터를 컨테이너 수명과 독립적으로 관리할 수 있으며, 이는 유연하고 재사용 가능한 시스템 설계에 매우 중요합니다.주요 개념 정리마운트 포인트(Mount Point):리눅스 시스템에서는 여러 디스크나 저장 장치를 하나의 파일 트리 구조로 통합합니다. 마운트 포인트는 특정 디렉토리를 특정 저장 장치(디스크 파티션, 네트..

2024. 12. 9. 16:28
Docker

Docker in Action Chapter 3

3장: Software installation simplified (소프트웨어 설치 단순화)이 장에서는 Docker를 사용하여 소프트웨어를 식별하고, 찾고, 설치하는 과정을 단계별로 살펴봅니다. 또한 파일 시스템 격리와 레이어 개념을 통해 이미지 내부 구조를 이해하고, 실제 설치 과정에서 중요한 최선의 방법들을 익힙니다.소프트웨어 설치 과정의 3단계소프트웨어 식별:어떤 프로그램을 설치할지 이름, 버전, 출처(리포지토리 및 태그)를 정확히 지정해야 합니다. Docker는 소프트웨어를 ‘이미지’ 단위로 다루며, 이미지는 특정 레지스트리 내의 리포지토리와 태그를 통해 식별됩니다.리포지토리 찾기 및 이미지 설치:Docker Hub(기본 레지스트리)나 다른 레지스트리를 통해 이미지를 검색하고 pull 명령어로 ..

2024. 12. 9. 16:26
Docker

Docker in Action Chapter 2

2장: 컨테이너로 소프트웨어 실행하기(Running software in containers)이 장에서는 실제 컨테이너 환경에서 소프트웨어를 실행하고 관리하는 기초를 다룹니다. 컨테이너 안에 다양한 애플리케이션(웹 서버, 모니터링 프로그램, 메일러 등)을 넣어 실행하며, 컨테이너 상태 확인, 로그 조회, 정리, 환경 변수 주입, 재시작 정책 설정 등 중요한 Docker 운영 기법을 살펴봅니다.컨테이너 실행과 프로세스 격리프로세스 격리의 중요성:리눅스 컨테이너 기술은 프로세스, 파일 시스템, 네트워크 등을 네임스페이스로 격리하여, 하나의 호스트에서 서로 다른 애플리케이션이 독립적으로 실행되도록 합니다. 이를 통해 소프트웨어 간 충돌을 방지하고 보안·관리 측면에서 이점을 얻을 수 있습니다.PID 네임스페이스..

2024. 12. 9. 16:25
Docker

Docker in Action Chapter 1

1장: Docker에 오신 것을 환영합니다(Welcome to Docker)이 장에서는 Docker의 기본 개념, 컨테이너가 무엇이며 왜 중요한지, 컨테이너와 기존 가상화 기술의 차이점, 그리고 Docker가 소프트웨어 설치·배포·실행 문제를 어떻게 해결하는지를 소개합니다. 또한 "Hello, World" 예제를 통해 Docker를 실제로 어떻게 사용하는지 체험하고, Docker 사용 시 유용한 도구와 생태계에 대해 간략히 다룹니다.리눅스 컨테이너 기본 개념컨테이너란?리눅스 커널 기능(네임스페이스, cgroups)을 활용하여 프로세스 격리와 자원 관리를 제공하는 운영체제 수준 가상화 기술.각 컨테이너는 독립적인 파일 시스템, 네트워크 스택, 프로세스 공간을 가지며, 호스트 커널을 공유한다.컨테이너의 특징..

2024. 12. 9. 16:24
Docker

Docker 컨테이너 네트워킹

Docker 컨테이너 네트워킹Docker 컨테이너 네트워킹은 컨테이너들이 서로, 호스트 시스템, 외부 네트워크와 통신할 수 있도록 하는 핵심 기능입니다. Docker는 다양한 네트워킹 옵션을 제공하여 애플리케이션 개발, 테스트, 배포와 같은 다양한 사용 사례를 지원합니다.Docker 네트워킹 소개Docker 네트워킹은 컨테이너가 서로, 호스트 시스템 및 외부 네트워크와 통신할 수 있도록 합니다. 이를 통해 다음과 같은 기능을 수행할 수 있습니다:단일 네트워크 네임스페이스 공유독립적 또는 상호 연결된 네트워크 사용외부 세계에 서비스를 노출Docker는 libnetwork 라이브러리를 사용하여 네트워크를 관리하며 유연성과 확장성을 제공합니다.Docker 네트워크 모드1. 브리지 네트워크 (기본값)설명: Do..

2024. 12. 4. 16:44
Docker

도커 볼륨 (Docker Volumes)

도커 볼륨 (Docker Volumes)도커 볼륨은 컨테이너 간 데이터를 공유하거나, 컨테이너가 종료되어도 데이터를 유지하기 위해 사용하는 도커의 데이터 관리 메커니즘 중 하나입니다. 도커 볼륨은 호스트 파일 시스템의 디렉토리와 컨테이너의 디렉토리를 연결하여 데이터를 저장하고, 컨테이너 재생성 시에도 데이터를 유지합니다.주요 특징데이터의 영속성: 컨테이너가 종료되거나 삭제되더라도 데이터를 유지합니다.컨테이너 간 데이터 공유: 여러 컨테이너에서 동일한 볼륨을 마운트하여 데이터를 공유할 수 있습니다.호스트 독립성: 볼륨은 도커가 관리하므로 호스트 파일 시스템의 특정 경로에 의존하지 않습니다.백업 및 복원 용이성: 볼륨 데이터를 별도로 백업하고 복원할 수 있습니다.볼륨의 종류1. 익명 볼륨 (Anonymous..

2024. 12. 4. 14:17
Docker

Surface Area

Surface Area란?Surface Area는 컨테이너화된 애플리케이션의 공격 노출 범위를 의미합니다. 이는 외부 세계(네트워크, 호스트 시스템 등)와 애플리케이션이 상호작용하는 모든 접점을 포괄하며, 보안 측면에서 중요하게 고려됩니다. Surface Area를 효과적으로 관리하는 것은 컨테이너 보안을 강화하고 잠재적인 취약점을 줄이는 데 필수적입니다.Surface Area의 주요 요소네트워크 포트컨테이너가 외부와 통신하기 위해 노출하는 포트입니다.예: EXPOSE 80 또는 docker run -p 8080:80에서 80번 포트가 Surface Area에 포함됩니다.노출된 포트는 외부 공격의 주요 진입점이므로 필요하지 않은 포트는 닫아야 합니다.파일 시스템컨테이너에서 사용 가능한 파일 시스템의 노출..

2024. 12. 4. 10:19
Docker

Docker 이미지 레이어

1. Docker 이미지 레이어란?Docker 이미지는 여러 불변의 레이어(Immutable Layers)로 구성됩니다. 각 레이어는 이미지의 파일 시스템 변화(추가, 수정, 삭제)를 나타내며, 이러한 레이어들이 결합되어 최종적으로 하나의 이미지가 됩니다.특징불변성: 각 레이어는 읽기 전용이며, 생성된 이후 변경되지 않습니다.효율성: 여러 이미지는 공통된 레이어를 공유하여 저장 공간을 절약합니다.캐싱: Docker는 레이어를 캐싱하여 빌드와 배포 속도를 높입니다.2. Docker 레이어의 구성Docker 이미지는 다음과 같은 방식으로 레이어를 구성합니다:베이스 레이어(Base Layer)Dockerfile의 FROM 명령어에서 지정된 기본 이미지입니다.예: FROM ubuntu:20.04는 Ubuntu ..

2024. 12. 4. 09:43
Docker

Makefile

Makefile이란?Makefile은 자동화된 빌드 시스템을 위한 파일로, C/C++ 같은 언어로 작성된 프로그램을 컴파일하거나 프로젝트 작업을 자동화하는 데 사용됩니다.GNU Make와 함께 사용되며, 명령어와 종속성 규칙을 정의하여 빌드 과정을 효율적으로 관리합니다.1. Makefile의 주요 개념1.1 타겟(Target)빌드 프로세스의 출력물 또는 실행 가능한 작업의 이름.예: 실행 파일, 객체 파일, 특정 작업.1.2 종속성(Dependency)타겟을 생성하기 위해 필요한 파일이나 작업.1.3 명령어(Command)타겟을 생성하기 위해 실행되는 쉘 명령어.2. Makefile의 기본 구조타겟: 종속성 명령어예제all: hellohello: hello.o gcc -o hello hello..

2024. 12. 3. 16:03
Docker

Docker 레지스트리

Docker 레지스트리란?Docker 레지스트리(Docker Registry)는 Docker 이미지를 저장하고 관리하기 위한 저장소 시스템입니다.개발자와 운영자가 이미지를 공유하고 배포하기 위해 필수적인 도구입니다.1. Docker 레지스트리의 주요 개념1.1 Docker 레지스트리(Docker Registry)이미지 저장소: Docker 이미지를 저장하고 관리하는 중앙 서버.공개 및 비공개: 이미지가 누구에게나 공개될 수도 있고, 특정 사용자만 접근 가능한 비공개 설정도 가능.1.2 Docker 허브(Docker Hub)Docker에서 제공하는 공식 레지스트리 서비스.기본 설정: docker pull이나 docker push 명령어를 실행하면 기본적으로 Docker Hub와 통신.1.3 프라이빗 레지스..

2024. 12. 3. 15:00
  • «
  • 1
  • 2
  • »

공지사항

  • Jinsu's GitHub

전체 카테고리

  • 분류 전체보기 (250)
    • Java (18)
    • Spring Framework (33)
      • Toby's Spring 3.1 (6)
      • Spring IoC (6)
      • TDD (6)
      • Reflection (6)
      • AOP (6)
    • Spring Boot (11)
    • Spring Security (22)
    • Database (17)
      • Mysql (2)
      • JDBC (2)
      • JPA (13)
    • Build and Development Tools (3)
      • Maven (1)
      • Gradle (1)
      • Lombok (1)
    • Network (12)
    • Apache Tomcat (11)
    • Microservices Architecture (33)
    • Linux (9)
    • React (10)
    • Docker (22)
    • OAuth (10)
    • DevOps (2)
    • Git (2)
    • HTML (1)
    • CSS (1)
    • JavaScript (1)
    • Problem and Solution Guide (8)
      • Java (1)
      • Spring Framework (4)
      • Reflection (1)
      • Dynamic Proxy (1)
      • JPA (1)
    • Note-Taking (23)

블로그 인기글

전체 방문자

오늘
어제
전체
Powered by Privatenote Copyright © Jinsu's Technical Blog All rights reserved. TistoryWhaleSkin3.4

티스토리툴바