Docker 7

[Docker] 6. Docker-Compose

지금까지 도커 컨테이너를 많이 띄우다보면 드는 생각이 하나 있다."각각의 컨테이너가 서로 유기적으로 작동하게 만들 수는 없나?" 있다. 방법이.Docker Compose란?여러 도커 컨테이너를 정의하고 실행하기 위한 도구이다.YAML 파일을 사용하여 애플리케이션의 서비스, 네트워크, 볼륨 등을 구성하고,단일 명령어로 이 모든 서비스를 시작하거나 종료 할 수 있게 해준다. 도커 컴포즈의 장점1. 멀티 컨테이너 애플리케이션 정의 : 여러 컨테이너, 볼륨, 네트워크를 관리해야 하는 복잡한 애플리케이션을 쉽게 관리 할 수 있다. 각 컴포넌트를 모듈화하여 관리 할 수 있으며, 종속성과 실행 순서를 명확하게 정의 할 수 있다.2. 환경 일관성 보장: docker-compose.yml 파일을 통해 개발, 스테이징(테..

Docker 2024.09.16

[Docker] 5. Overlay FS & Storage

이번에 배울 것은 Union File System인 Overlay FS(file system)이다.사실 대부분의 도커를 배우게 된다면 해당 그림을 제일 접할 것이다. 가장 중요하면서도 어려운 부분이라고 생각한다. 근데 나 같은 경우엔, 맨 처음 이것에 대해 배우고 실습을 했지만 도커를 잘 사용할 수 있었음에도이것에 대한 개념을 제대로 파악하지 못했었다. 조금의 시간이 지나며 차차 도커의 이미지 레이어 개념을 파악하고, 떠올리며 차차 이해되기 시작했다.그래서 도커 레이어에 대한 글을 쓴 이후에서야 글을 작성하게 되었다.What is Overlay FS? 리눅스 파일 시스템의 한 유형으로, 두개의 디렉토리를 하나의 디렉토리처럼 겹쳐서 표현 할 수 있게 해주는 "유니온 파일 시스템(Union File Syst..

Docker 2024.09.14

[Docker] 4. 도커 이미지 레이어(Image Layer)

지금까지 도커 이미지를 빌드하는 과정을 겪으며 느끼지 않았는가?도커 파일을 작성하고 처음 빌드를 실행하면 시간이 엄청 오래 걸린다. 그러다 중간에 이미지 빌드 중 오류가 나거나 도커 이미지에 새로운 사항을 반영하려 새로 빌드를 할 때처음보다 빠르게 이미지가 빌드되고는 한다. 이것은 도커가 가지는 특성 중 하나인 이미지 레이어링(Docker Image Layering) 이다. 이미지 레이어링이란?도커 이미지는 통째로 하나가 아닌 여러 레이어로 구성되어 있다. Dockerfile에서 생각해보면 FROM, COPY, RUN 등 명령어 한 줄씩 있었지 않나?그 하나의 명령어 한줄이 하나의 레이어가 되어 한 겹씩 쌓이고 최종적으로 하나의 이미지라는 형태로 구성되게 된다.근데, 이러면 뭐가 좋은지 잘 모를 것이다...

Docker 2024.09.13

[Docker] 3. 도커 파일 멀티스테이지 빌드(Multi-stage build)

"지금까지 이미지를 잘 써왔는데 멀티 스테이지 빌드는 뭐에요?" 싶을 것이다.생각해보자, 우리가 간단히 실행해본 node.js 의 컨테이너의 동작은 매우 간단했다.하지만 해당 이미지의 크기를 보면 기능에 비해 터무니 없이 큰 용량을 차지하는 것을 보았을 것이다."그럼 용량을 줄일 수는 없을까? 필요한 것만 가져다 쓰게끔하면 어떨까?" 라는 생각이 들 것이다. 애플리케이션에서 필요한 것만 사용하여 용량을 최적화하는 방법도 있지만,이때 생각해볼 수 있는 것이 멀티 스테이지 빌드이다.멀티 스테이지 빌드란?도커 이미지를 더 효율적으로 구축할 수 있게 해주는 Dockerfile의 기능이다. 여러 단계에 걸쳐서 이미지를 빌드하고 최종 이미지에서는 필요한 파일만 포함시킬 수 있어서 결과적으로 이미지의 크기를 줄일 수..

Docker 2024.09.13

[Docker] 2.도커 허브

도커 허브란?도커 이미지를 공유하고 관리할 수 있는 클라우드 기반의 서비스이다. 도커 이미지를 검색하고, 공유하고, 관리하고, 다운로드할 수 있는 점에서소스 코드를 관리하고, 버전관리 하는 깃허브의 도커 버젼이라 생각하면 좋을 것이다. 주요 기능이미지 저장소(Repository): 사용자가 개인 또는 공개 이미지를 업로드 할 수 있다. 이 저장소에서 컨테이너화된 이미지에 대해 버젼 관리를 할 수 있고, 개인 저장소는 제한된 사용자만 접근 할 수 있지만공개 저장소는 누구나 이미지를 검색해서 다운로드 할 수 있다. 자동 빌드(Automated Builds): GitHub 또는 Bitbucket과 같은 소스 코드 저장소에 연결하여 소스 코드의 새로운 커밋이 발생할 때마다 자동으로 도커 이미지를 빌드하고 업데이..

Docker 2024.09.13

[Docker] 1. 도커 파일 작성 & 컨테이너 실행하기

도커 파일이란?도커 이미지를 빌드하기 위한 설정 파일이다. Dockerfile은 일련의 명령어로 구성되어 있으며, 이 명령어들을 사용해 컨테이너 환경을 정의한다.애플리케이션을 실행하는 데 필요한 모든 구성 요소(예: 베이스 이미지, 파일 복사, 패키지 설치, 명령 실행 등)를 포함하는 텍스트 파일이다. 도커 파일의 구성 요소FROM: Dockerfile에서 사용할 베이스 이미지를 지정한다.사용 예시: FROM ubuntu:20.04 - ubuntu:20.04 이미지를 베이스로 사용할 것을 지정 WORKDIR: 명령어가 실행될 작업 디렉토리를 설정사용 예시: WORKDIR /usr/src/appCOPY: 로컬 시스템에서 파일을 컨테이너로 복사사용 예시: COPY . /usr/src/app  - 현재 위치에..

Docker 2024.09.12

[Docker] 0. 도커 알아보기

우리가 새로운 컴퓨터를 사고나면컴퓨터에 운영체제(OS)를 설치한 뒤, 프로그램을 설치하고 필요한 환경 변수를 설정해주고 패키지를 설치하면드디어 코드를 돌릴 수 있는 환경 준비가 완성 된다. 어떤 코드를 열심히 작성해서 해당 애플리케이션이 작동이 완성되었다해보자.그럼 이제 애플리케이션을 다른 새로운 컴퓨터에 띄워야 한다면 어떻게 하겠는가?OS는 깔려있으니, 필요한 프로그램을 설치하고, 환경 변수를 설정하고, 패키지를 설치하여코드를 실행해야 할 것이다. 불편하지 않은가?나는 귀찮다.이게 컴퓨터 1대에서 2대가 되고 만약 10대가 된다면 정말정말 많이 귀찮아질 것이다. 그럼 어떻게 해야 할까? 이 내가 만든 이 환경을 그대로 감싸서 포장해버릴 수 있지 않을까?그러면 이 환경을 내가 별 수고가 안들어도 다른데 ..

Docker 2024.09.12