container 14

[Kubernetes#1] 쿠버네티스(Kubernetes)란?

오늘날의 소프트웨어 개발 환경에서는 수많은 컨테이너(Container) 들이 동시에 실행되고, 서로 협업하며 하나의 애플리케이션을 구성합니다. 이러한 환경을 안정적으로 운영하고 관리하기 위해 등장한 기술이 바로 쿠버네티스(Kubernetes) 입니다. 쿠버네티스란?쿠버네티스(Kubernetes)는 여러 개의 컨테이너를 효율적으로 배포하고, 자동으로 확장하고, 안정적으로 운영하도록 돕는 오픈 소스 컨테이너 오케스트레이션 시스템입니다.다르게 표현하자면, 단순히 컨테이너를 실행하는 수준을 넘어서, 전체 인프라 수준에서 컨테이너들을 자동으로 배치하고, 관리하고, 복구하는 기술입니다. 쉽게 말해, 쿠버네티스는 Docker Compose의 확장판이라고 볼 수 있습니다.Docker Compose가 로컬 개발 환경에..

MLOps/Docker 2025.05.13

[Docker#16] Docker Compose 여러 개의 컨테이너 동시에 띄우기(2)

Docker Compose를 사용하면 여러 개의 컨테이너를 동시에 띄워 다양한 환경을 쉽게 구축할 수 있습니다. 예를 들어, Python(Flask) 백엔드와 MySQL 데이터베이스를 각각 컨테이너로 구성해 한 번에 실행할 수 있죠.하지만 종종 아래와 같은 MySQL 연결 오류를 마주하게 됩니다. Can't connect to MySQL server on 'my-db' ([Errno 111] Connection refused) 이번 글에서는 왜 이런 에러가 발생하는지, 그리고 어떻게 해결해야 하는지를 설명하도록 하겠습니다. 에러 원인: 컨테이너는 서로 다른 'localhost'를 가진다보통 우리는 MySQL 주소를 이렇게 작성합니다.conn = pymysql.connect( host="localh..

MLOps/Docker 2025.05.13

[Docker#15] Docker Compose 여러 개의 컨테이너 동시에 띄우기(1)

개발 환경을 셋업할 때, 데이터베이스와 백엔드 서버를 동시에 띄우는 작업은 매우 흔합니다. 이번 글에서는 MySQL과 Python(Flask 서버)를 Docker Compose로 한 번에 실행하는 실습을 해보겠습니다. 실습디렉토리 구조project/├── app/│ ├── main.py│ ├── requirements.txt│ └── Dockerfile├── compose.yml Flask 코드from flask import Flaskimport pymysqlapp = Flask(__name__)@app.route("/")def hello_mysql(): try: conn = pymysql.connect( host="localhost" ..

MLOps/Docker 2025.05.13

[Docker#14] Docker Compose란?

복잡한 애플리케이션을 개발하거나 운영하다 보면, 하나의 컨테이너만으로는 충분하지 않을 때가 많습니다. 예를 들어, 웹 서버와 데이터베이스 서버를 함께 운영하거나, 여러 개의 마이크로서비스를 동시에 실행해야 할 때가 대표적인 사례입니다. 이때 유용하게 활용되는 도구가 바로 Docker Compose입니다. Docker Compose란?Docker Compose는 여러 개의 Docker 컨테이너를 하나의 서비스 묶음으로 정의하고 관리할 수 있게 도와주는 도구입니다. 즉, 복잡한 컨테이너 환경을 하나의 compose.yml 파일로 정의해두면, 한 줄 명령어로 전체 서비스를 실행하거나 중지할 수 있습니다. 왜 사용할까?1. 여러 개의 컨테이너를 효율적으로 관리할 수 있다.웹 서버, 데이터베이스, 캐시 서버 ..

MLOps/Docker 2025.05.12

[Docker#13] Dockerfile WORKDIR

Docker를 사용할 때, 아무 디렉터리에나 파일을 복사하거나 실행하면 컨테이너 내부가 금방 지저분해집니다.이 문제를 해결해주는 중요한 명령어가 바로 WORKDIR입니다. 이번 글에서는 WORKDIR의 의미, 사용법을 알아보도록 하겠습니다. WORKDIR이란?WORKDIR은 Dockerfile에서 작업 디렉터리를 설정하는 명령어입니다.설정된 디렉터리 이후에 등장하는 RUN, COPY, CMD, ENTRYPOINT 등 모든 명령은 이 디렉터리를 기준으로 동작합니다.비유하자면, 미니 컴퓨터의 "작업 폴더"를 미리 지정해두는 것과 같습니다. 왜 써야 할까? 파일이 깔끔하게 정리됩니다.컨테이너 내부가 혼란스럽지 않습니다.대규모 프로젝트에서도 관리가 쉬워집니다.안 쓰면 컨테이너 루트(/)에 파일이 섞여버립니..

MLOps/Docker 2025.05.12

[Docker#11] Dockerfile ENTRYPOINT

Docker는 애플리케이션을 컨테이너 단위로 분리하고 실행할 수 있게 해주는 도구입니다.이때, 컨테이너가 실행되자마자 자동으로 특정 명령을 수행하도록 설정할 수 있는데요, 이 기능을 담당하는 Dockerfile 명령어가 바로 ENTRYPOINT입니다. ENTRYPOINT란?ENTRYPOINT는 Dockerfile에서 정의하는 명령어로, 컨테이너가 실행될 때 자동으로 실행되는 명령을 설정할 수 있습니다.쉽게 말해, 미니 컴퓨터의 전원을 켜자마자 실행하고 싶은 프로그램을 등록하는 것과 같습니다. ENTRYPOINT [ "실행할_명령어", "인자1", "인자2", ... ] 실습컨테이너가 실행되면 main.py 파이썬 스크립트를 자동으로 실행하게 만들어보겠습니다. # 프로젝트 구성.├── Dockerfi..

MLOps/Docker 2025.05.12

[Docker#10] Dockerfile COPY

Docker를 사용할 때, 호스트 컴퓨터의 파일이나 디렉터리를 컨테이너로 복사하는 작업은 매우 자주 사용됩니다.이때 사용하는 것이 바로 COPY 명령어입니다. 이번 글에서는 COPY의 기본 문법을 알아보겠습니다. COPY란?COPY는 호스트 컴퓨터(내 로컬)에 있는 파일이나 폴더를 컨테이너 이미지 안으로 복사하는 명령어입니다.보통 코드, 설정 파일, 라이브러리 등을 Docker 이미지에 포함시킬 때 사용합니다. COPY [복사할_파일_또는_폴더_경로] [컨테이너_내_경로] 예를 들어, app.txt 파일을 컨테이너 루트에 복사하고 싶다면 다음과 같이 작성합니다.COPY app.txt /app.txt 단일 파일 복사FROM python:3.11-slimCOPY app.txt /app.txtENTRYPO..

MLOps/Docker 2025.05.12

[Docker#9] Dockerfile이란?

오늘은 도커의 핵심 구성 요소 중 하나인 Dockerfile과 이를 활용해 나만의 이미지 만들기, 디버깅 방법까지 정리해보겠습니다. Dockerfile이란?도커는 이미 만들어진 이미지들을 Docker Hub에서 받아서 사용할 수 있습니다. 예를 들어, python, nginx, mysql 같은 이미지들을 다운받아 바로 컨테이너로 실행할 수 있죠.하지만 때로는 내가 만든 코드나 애플리케이션을 직접 이미지로 만들어 배포하고 싶을 때도 있습니다.이때 사용하는 것이 바로 Dockerfile입니다. 즉, 나만의 Docker 이미지를 만들기 위한 설정 파일이라고 생각하시면 됩니다. 예를 들어, 직접 만든 Spring Boot 프로젝트를 컨테이너에서 실행하고 싶다면, 이 프로젝트를 기반으로 한 Dockerfile을..

MLOps/Docker 2025.05.12

[Docker#8] 볼륨(Volume)이란?

Docker를 활용하면 다양한 서비스를 손쉽게 컨테이너로 띄울 수 있습니다. 하지만, 그만큼 컨테이너가 갖는 단점도 분명 존재하죠. 특히 데이터의 영속성 문제는 처음 도커를 사용하는 입장에서 꼭 짚고 넘어가야 할 중요한 포인트입니다. 이번 글에서는 Docker Volume(도커 볼륨) 이 무엇인지, 왜 필요한지 소개하도록 하겠습니다. 기존 방식의 한계Docker는 새로운 코드나 설정 변경이 있을 때마다 기존 컨테이너를 삭제하고 새로 생성하는 방식으로 업데이트를 진행합니다. 이 방식은 깔끔하고 효율적이지만, 한 가지 큰 단점이 있습니다:컨테이너가 삭제되면, 그 안의 데이터도 함께 삭제된다. 예를 들어, MySQL 컨테이너를 실행해 데이터를 저장했더라도, 컨테이너를 삭제하면 해당 데이터베이스도 통째로 사라..

MLOps/Docker 2025.05.08

[Docker#7] 컨테이너(Container) 내부 접속

Docker의 핵심은 컨테이너(Container) 입니다.컨테이너는 한 마디로 호스트 컴퓨터 안에 존재하는 작은 컴퓨터라고 할 수 있습니다. 각각의 컨테이너는 자신만의 운영체제 환경(OS), 저장 공간과 프로그램 실행 공간을 별도로 가지고 있습니다. 즉, 물리적으로는 하나의 컴퓨터지만, 논리적으로는 여러 대의 컴퓨터가 돌아가는 것처럼 사용할 수 있습니다. 따라서, Docker를 사용하다 보면, 실행 중인 컨테이너 안으로 직접 들어가서 파일을 조회하거나, 명령어를 실행해야 할 때가 있습니다.이럴 때 사용하는 명령어가 바로 docker exec -it입니다. 이번 글에서는 컨테이너 내부에 접속하는 방법과, 그 과정에서 알아야 할 개념들을 함께 정리해보겠습니다. 실행 중인 컨테이너 내부에 접속하기컨테이너 내..

MLOps/Docker 2025.04.29