Docker Container Build
개발 환경 설정
| WSL2에 Docker install sudo apt update -y sudo apt upgrade -y sudo apt install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update -y sudo apt install -y docker-ce docker-ce-cli containerd.io sudo usermod -aG docker $USER sudo service docker start |
Example 2.5
| FROM python:3 COPY . /app WORKDIR /app |
※ 베이스 이미지란?
2.5 예제에서 사용된 베이스 이미지인 파이썬은 도커파일을 통해 빌드됐으며 파이썬 프로그램을 실행하는데 필요한 모든 것을 갖춘 환경을 제공. Docker Hub에서 제공하는 컨테이너 이미지의 경우 도커파일 출처가 연결돼 있어 구성방식을 확인할 수 있다. 베이스 이미지로 스크래치(Scratch)라는 아무 파일도 없는 완전히 비어있는 특별한 이미지를 사용할 수 도 있지만 일반적으로 기타 다른 베이스 이미지(예: 파이썬, 우분투 등)로 시작하는 경구가 대부분.
그 외
디펜던시 추가 가능 - 베이스 이미지 외 애플리케이션에서 필요한 모든 디펜더시를 설치하여 사용 가능.
도커 내부에서 코드 컴파일 - 자바, .NET, 스위프트(Swift) 및 C++와 같이 컴파일이 필요한 프로그램은 도커 내부에서 컴파일 가능.
OpenJDK를 베이스 이미지로 시작점에 활용하고 COPY 명령을 통해 애플이케이션을 복사.
다단계 빌드로 컴파일 가능 - Multi-Stage container build.
※자체 개발 애플리케이션 컨테이너화하기
직접 개발한 애플리케이션을 컨테이너화하는 경우 다음과 같은 일반적인 단계에 따라 수행한다.
1. 가능한 많은 설정 환경을 제공하는 이상적인 베이스 이미지를 찾는다. Ruby on Rails 애플리케이션의 경우 일반적인 우분투가 아닌 베이스 이미지로 루비를 사용하여 시작한다. Django의 경우 파이썬을 베이스 이미지로 사용한다.
2. 필요한 애플리케이션별 디펜던시를 구성한다.
3. 애플리케이션을 복사한다.
도커컴포즈 사용하기
논리그룹으로 구성된 여러 개의 컨테이너를 구성하거나 해제하고, 실행과정에서 런타임 설정을 보존할 수 있는 작은 규모의 오케스트레이터.
로컬 환경의 테스트에 매우 유용.
※메모
컴파일된 코드의 경우 볼륨 바인딩 기능이 별로 도움이 되지 않을 수 있다. 바이너리를 로컬에서 빌드하여 컨테이너에서 해당 바이너리를 교체할 수 있지만 도커를 통해 모든 것을 빌드하려고 하는 경우(또는 로컬 환경과 컨테이너 간에 아키텍처 차이가 존재하는 경우) 볼륨 바인딩은 큰 도움이 되지 않음.
'Kubernetes' 카테고리의 다른 글
| Kubernetes for Developers - 3장 정리 (2) | 2025.07.13 |
|---|---|
| Kubernetes for Developers - 1장 정리 (0) | 2025.07.13 |