목록DevOps/docker (24)
나의 잡다한 노트 및 메모
멀티 스테이지 빌드에서는 --target 옵션을 사용하여 원하는 특정 스테이지만 빌드할 수 있습니다. # 빌드 스테이지FROM node:14 AS builderWORKDIR /appCOPY package*.json ./RUN npm installCOPY . .RUN npm run build# 실행 스테이지FROM nginx:alpine AS runtimeCOPY --from=builder /app/build /usr/share/nginx/html이런 도커파일이 있다고 하고 stage가 정의돼있을때,builder와 runtime 두 개의 스테이지가 있다. 만약 빌드 시점에 builder 스테이지만 실행하고 싶다면 docker build --target builder -t myapp-builder . 이 명..
ARG vs. ENVARG (Build-time Argument)빌드 시점에만 사용할 수 있는 변수입니다.도커 이미지를 빌드할 때, 빌드 명령어(docker build)에 --build-arg 옵션을 통해 값을 전달할 수 있습니다.빌드가 완료되면 해당 값은 최종 이미지에 남지 않습니다.주로 빌드 프로세스에서만 필요한 정보를 전달할 때 사용합니다.ENV (Environment Variable)런타임과 빌드 시점 모두에서 사용할 수 있는 변수입니다.최종 컨테이너 이미지에 포함되어, 컨테이너가 실행될 때도 환경 변수로 남습니다.주로 애플리케이션 실행 시 필요한 설정이나 경로, 옵션 등을 지정할 때 사용합니다.
도커(Docker) 이미지를 이용해 개발 환경(dev), QA(품질 테스트 환경), 운영 환경(prod) 등 여러 스테이지(Stage)를 분리하고, 각 환경마다 인증이나 설정이 달라질 수 있다는 점을 설명하고 있습니다. 그리고 이를 환경 변수(ENV) 관리를 통해 효율적으로 제어할 수 있다는 내용을 담고 있습니다.아래에서 좀 더 구체적으로 살펴보겠습니다.1. 스테이지(환경) 구분일반적으로 애플리케이션 개발 과정에서는 다음과 같은 환경을 분리합니다:Dev(개발 환경):개발자들이 코드를 작성하고, 로컬 또는 개발 서버에서 실행하는 환경배포 자동화나 CI/CD 파이프라인 등을 테스트해볼 수 있음QA(품질 보증 환경 / 테스트 환경):QA 팀이나 자동화 테스트가 실제 프로덕션 환경과 유사한 조건에서 테스트를 진..
https://mp.weixin.qq.com/s/kFftay1IokBDqyMuArqOpg 把数据库放入Docker是一个好主意吗?为什么将生产数据库放到Docker里是一个馊主意?老文重发,顺便预热一下明天的《数据库应该放入K8S中吗?》mp.weixin.qq.com 중국어로 작성됐지만 한글로 번역기 돌리면 된다.좋은 글이다. 실제로 회사에서 구축하는 작업을 하면서 굉장히 공감이 많이 되고 생각이 바뀌게 되는 글이였다.

리눅스 호스트에서 Docker 컨테이너로 IP 패킷이 전달될 때(호스트의 NIC는 192.168.* 대역, 컨테이너는 172.16.* 대역을 사용한다고 가정), 내부적으로는 리눅스 네트워킹 스택과 Docker가 설정한 가상 인터페이스(veth), 브리지(docker0 등), 네임스페이스가 관여하게 됩니다. 흐름을 단계별로 단순화하면 대략 다음과 같습니다.1. 호스트 측에서 패킷을 생성 (출발지: 호스트 IP, 목적지: 컨테이너 IP)어플리케이션/프로세스에서 172.16..(컨테이너 IP)로 패킷 전송예: ping 172.16.0.2 와 같이 호스트가 컨테이너 IP로 직접 패킷을 전송하려고 할 때커널 라우팅 테이블 확인리눅스 커널은 “172.16.* 대역”으로 가는 경로(route)가 어디인지 확인합니다...
Docker Stack은 Docker의 오케스트레이션 도구 중 하나로, 주로 Docker Swarm 모드에서 여러 컨테이너 서비스를 관리하고 배포하는 데 사용됩니다. Docker Stack을 사용하면 복잡한 애플리케이션을 여러 서비스로 구성하고, 이를 하나의 스택으로 정의하여 쉽게 배포, 확장, 관리할 수 있습니다. 다음은 Docker Stack에 대한 주요 설명입니다.주요 개념스택(Stack)스택은 여러 개의 서비스, 네트워크, 볼륨 등을 하나의 단위로 묶은 구성입니다. 예를 들어, 웹 서버, 데이터베이스, 캐시 서버 등을 하나의 스택으로 정의할 수 있습니다.Compose 파일docker-compose.yml 파일과 유사한 YAML 파일을 사용하여 스택의 구성을 정의합니다. 이 파일에는 각 서비스의 이..
오버레이 네트워크는 물리적 네트워크 위에 가상 네트워크를 생성하여 여러 호스트 간 통신을 가능하게 하는 네트워크 기술입니다. 이 가상 네트워크는 물리적 네트워크를 캡슐화(encapsulation)하여 논리적으로 격리된 네트워크 환경을 제공합니다. 오버레이 네트워크는 컨테이너나 VM과 같은 가상 환경 간의 통신을 지원하며, 다음과 같은 주요 구성 요소로 이루어져 있습니다:1.1. 가상 네트워크 (Virtual Network)물리적 네트워크와 독립적으로 작동하며, 각 컨테이너나 VM은 가상 네트워크를 통해 통신합니다.논리적으로 구성되기 때문에 네트워크를 세분화하고, 격리된 환경을 제공할 수 있습니다.1.2. 캡슐화 (Encapsulation)네트워크 트래픽은 VXLAN(또는 GRE, IPsec) 프로토콜을 ..
Docker BuildKit는 Docker의 빌드 엔진으로, Docker 이미지 빌드 프로세스를 개선하고 최적화하기 위해 도입된 혁신적인 기능입니다. BuildKit은 기존의 Docker 빌드 시스템에 비해 여러 가지 장점과 기능을 제공하며, 더 효율적이고 빠른 이미지 빌드를 가능하게 합니다. 1. Docker BuildKit 소개Docker BuildKit은 Docker의 새로운 이미지 빌드 시스템으로, Docker Engine과 통합되어 더 빠르고 효율적인 빌드 프로세스를 제공합니다. BuildKit은 기본 Docker 빌드 시스템보다 향상된 기능과 성능을 제공하며, 복잡한 빌드 요구 사항을 더 잘 처리할 수 있도록 설계되었습니다.주요 특징병렬 빌드: 여러 단계의 빌드를 병렬로 실행하여 빌드 시간을..