본문 바로가기

Engineering WIKI/Docker11

[도커 교과서] 8장 헬스 체크와 디펜던시 체크로 애플리케이션의 신뢰성 확보하기 도커는 컨테이너를 실행할때마다 애플리케이션의 기본 상태를 체크한다. 의존 관계를 만족하는지 점검하는 디펜던시 체크 기능도 도커 이미지에 추가할 수 있다. 디펜던시 체크는 애플리케이션 실행 전에 필요한 요구 사항을 확인하는 기능으로, 실행 시점이 헬스 체크와는 조금 다르다. 모든 요구사항이 확인되면 디펜던시 체크가 성공하고 애플리케이션이 실행된다. 반대로 만족하지 못하는 요구 사항이 있다면 디펜던시 체크가 실패해 애플리케이션이 실행되지 않는다. CMD 인스트럭션에 정의된 명령은 컨테이너를 실행할 때 실행된다. curl은 웹 애플리케이션이나 API를 테스트하는 데 매우 유용한 도구다. 도커 컴포즈는 애플리케이션의 상태에 이상이 생겼을 때 어느 정도 복원할 수 있는 기능이 있다. 그러나 도커 컴포즈도 이상이 .. 2023. 3. 1.
[도커 교과서] 7장 도커 컴포즈로 분산 애플리케이션 실행하기 - f 옵션 Docker Compose는 기본적으로 커맨드가 실행하는 디렉토리에 있는 docker-compose.yml 또는 docker-compose.yaml를 설정 파일로 사용합니다. 다른 이름이나 경로의 파일을 Docker Compose 설정 파일로 사용하고 싶다면 -f 옵션으로 명시를 해줍니다. $ docker-compose -f docker-compose-local.yml up f 옵션은 여러 개의 설정 파일을 사용할 때도 사용할 수 있습니다. 이 때는 나중에 나오는 설정이 앞에 나오는 설정보다 우선하게 됩니다. $ docker-compose -f docker-compose.yml -f docker-compose-test.yml up logs docker-compose logs 커맨드는 서비스 .. 2023. 3. 1.
[도커 교과서] 6장 도커 볼륨을 이용한 퍼시스턴트 스토리지 컨테이너는 무상태 애플리케이션에게는 최적의 실행 환경이다. 그러나 애플리케이션에 전혀 상태가 없을 수는 없다. 퍼시스턴시(persistency)나 성능 향상을 위해 디스크를 사용하느 컴포넌트가 있어야 할 테고, 이 컴포넌트 역시 컨테이너에서 실행된다. 도커 볼륨과 마운트에 대해 배우고 컨테이너 파일 시스템이 어떻게 동작하는지 알아보자. 모든 컨테이너가 공유하는 이미지 레이어는 읽기 전용이고, 각 컨테이너가 따로 갖는 기록 가능 레이어는 컨테이너와 같은 생애주기를 갖는다. 이미지 레이어는 이미지를 내려받은 순간부터 삭제할 때까지 로컬 컴퓨터의 이미지 레이어에 존재한다. 그러나 컨테이너의 쓰기 가능 레이어는 컨테이너를 실행할 때 생성되며 컨테이너를 삭제할 때 함께 삭제된다.(컨테이너가 종료하는 것만으로는 컨.. 2023. 2. 25.
[도커 교과서] 5장. 도커 허브 등 레지스트리에 이미지 공유하기 5.1 레지스트리, 리포지터리, 이미지 태그 다루기 도커 허브는 도커 엔진에 기본으로 설정된 레지스트리이기도 하다. 달리 말하면, 로컬 컴퓨터에 없는 이미지를 내려받으려 할 때 가장 먼저 찾아 보는 곳이 도커 허브라는 말이다. docker.io/diamol/golang:latest docker.io : 이미지가 저장된 레지스트리의 도메인. 기본값은 도커 허브다. diamol : 이미지 작성자의 계정 이름. 개인 혹은 단체의 이름에 해당. golang : 이미지 리포지터리 이름. 일반적으로 애플리케이션의 이름에 해당 (하나의 리포지터리는 여러 버전의 이미지를 담을 수 있다.) latest : 이미지 태그. 애플리케이션의 버전 혹은 변종을 나타낸다. 기본값은 latest 레지스트리와 태그 등의 정보는 따로 .. 2023. 2. 25.
[도커 교과서] 4장. 애플리케이션 소스 코드에서 도커 이미지까지 멀티 스테이지 빌드 → 빌드가 여러 단계로 나뉨 RUN 인스트럭션 : 빌드 중에 컨테이너 안에서 명령을 실행한 다음 그 결과를 이미지 레이어에 저장하는 기능을 한다. COPY . . 해당 인스트럭셔을 통해 나머지 소스 코드가 복사된다. 이 인스트럭션은 ‘도커 빌드가 실행 중인 디렉터리에 포함된 모든 파일과 서브 디렉터리를 현재 이미지 내 작업 디렉토리로 복사하라’는 의미다 mvn package 명령 애플리케이션을 빌드하고 패키징하라는 의미다. 입력은 자바 소스 코드이며, 출력은 JAR 포맷으로 패키징된 자바 애플리케이션이다. 앞으로 여러개의 컨테이너를 실행해 이들이 서로 통신하게 될 것이다. 컨테이너는 컨테이너가 실행될 때 부여되는 가상 네트워크 내 가상 IP를 통해 서로 통신한다. 실습 : 컨테이너 간.. 2023. 2. 25.
[도커 교과서] 3장. 도커 이미지 만들기 Dockerfile의 목적은 애플리케이션 배포를 자동화 하는 것이다. 도커 이미지와 이미지 레이어 이해하기 도커 이미지는 물리적으로 여러 개의 작은 파일로 구성돼 있다. 도커 이미지에는 우리가 패키징에 포함된 모든 파일이 들어있다. 이미지 레이어를 제대로 이해해야 도커를 효율적으로 사용 할 수 있다. 도커 이미지는 이미지 레이어가 모인 논리적 대상이다. 레이어는 도커 엔진의 캐시에 물리적으로 저장된 파일이다. 이 점이 꽤 중요하냐면, 이미지 레이어는 여러 이미지와 컨테이너에서 공유되기 때문이다. 만약 Node.js 애플리케이션이 실행되는 컨테이너를 여러 개 실행한다면 이들 컨테이너는 모두 Node.js 런타임이 들어있는 이미지 레이어를 공유한다. 이미지 레이어를 이용한 Dockerfile 스크립트 최적화.. 2023. 2. 25.