도커 교과서 10장 도커 컴포즈를 이용한 여러 환경 구성
·
📚 책/도커 교과서
10장 도커 컴포즈를 이용한 여러 환경 구성배포가 실패하는 주된 원인은 환경 차이다.도커는 패키지에 모든 의존 모듈이 함께 들어가기 떄문에 해당 문제를 해결할 수 있다.하지만, 환경에따라 동작을 다르게 해야 할 필요가 있다.도커 컴포즈의 고급 기능을 사용하여 이를 해결할 수 있다.10.1 도커 컴포즈로 여러 개의 애플리케이션 배포하기같은 애플리케이션을 버전을 다르게 구동해야하는 경우가 있따.여러 환경을 구성해 사용하려면, 환경마다 애플리케이션이 다르게 동작하게 해야 한다.도커 컴포즈 파일에서 해당 구성을 명시해야 한다.도커 컴포즈 파일은 레이블 명명 규칙을 통해 도커 리소스를 컨테이너와 서비스로 구분하며 관리한다.도커 컴포즈 리소스 이름 규칙도커 컴포즈 파일이 위치한 디렉토리의 이름을 기본으로 프로젝트 ..
도커 교과서 9장 컨테이너 모니터링으로 투명성 있는 애플리케이션 만들기
·
📚 책/도커 교과서
9장 컨테이너 모니터링으로 투명성 있는 애플리케이션 만들기컨테이너에서 실행되는 애플리케이션의 투명성은 매우 중요한 요소다.투명성을 확보해야 애플리케이션의 동작 및 상태, 문제의 원인을 정확히 파악할 수 있다.9.1 컨테이너화된 애플리케이션에서 사용되는 모니터링 기술 스택프로메테우스를 사용하면 모니터링의 중요한 측면인 일관성이 확보된다.모든 애플리케이션을 똑같은 측정값을 통해 표준적인 형태로 모니터링할 수 있다.도커 엔진의 측정값도 같은 형식으로 추출할 수 있다.해당 기능을 사용하려면 프로메테우스 측정 기능을 명시적으로 활성화해야 한다.$ vi /etc/docker/daemon.json{ "metrics-addr" : "0.0.0.0:9323", "experimental" : true}$ sudo syst..
도커 교과서 8장 헬스 체크와 디펜던시 체크로 애플리케이션의 신뢰성 확보하기
·
📚 책/도커 교과서
8장 헬스 체크와 디펜던시 체크로 애플리케이션의 신뢰성 확보하기도커 스웜이나 쿠버네티스의 경우 컨테이너 플랫폼상에서 애플리케이션이 스스로 이상에서 회복할 수 있도록 해 주는 기능을 제공한다.이미지에 애플리케이션의 상태가 정상인지 확인할 수 있는 정보를 함께 패키징한다.애플리케이션이 정상적으로 동작하지 않으면, 플랫폼이 비정상 컨테이너를 삭제하고 새 컨테이너로 교체한다.8.1 헬스 체크를 지원하는 도커 이미지컨테이너를 실행시키면 내부에서 특정 프로세스가 실행된다.그러나, 해당 프로세스가 실행중이라고 애플리케이션이 정상적인 상태라는 뜻은 아니다.도커는 애플리케이션의 상태가 정상인지 확인할 수 있는 정보를 도커 이미지에 넣을 수 있다.$ docker container run -d -p 8080:80 diamo..
도커 교과서 7장 도커 컴포즈로 분산 애플리케이션 실행하기
·
📚 책/도커 교과서
7장 도커 컴포즈로 분산 애플리케이션 실행하기7.1 도커 컴포즈 파일의 구조분산 애플리케이션을 기준으로 보면 Dockerfile 스크립트는 애플리케이션의 한 부분을 패키징하는 수단이다.즉, 각 애플리케이셔의 Dokerfile 을 패키징하고 관리하기 위해서는 Docker Compose 를 사용하면 된다.Docker Compose 는 모든 컴포넌트가 실행 중일 때 어떤 상태가 되어야 하는지를 기술하는 파일이다.도커 컴포즈는 사람도 쉽게 읽고 이해할 수 있으며, YAML 문법으로 기술한다.Docker Compose 예시version : '3.7'services: todo-web: image: diamol/ch06-todo-list ports: - "8020:80" networks: - app-ne..
도커 교과서 6장 도커 볼륨을 이용한 퍼시스턴트 스토리지
·
📚 책/도커 교과서
6장 도커 볼륨을 이용한 퍼시스턴트 스토리지6.1 컨테이너 속 데이터가 사라지는 이유컨테이너의 디스크 역시 이미지 레이어를 순서대로 합쳐 만든 가상 파일 시스템이다.모든 컨테이너는 독립된 파일 시스템을 갖는다.즉, 한 컨테이너에서 파일 시스템을 통해 파일을 수정하더라도 다른 컨테이너는 영향을 받지 않는다.컨테이너를 종료해도 파일 시스템은 삭제되지 않는다.$ docker container run --name rn1 diamol/ch06-random-number$ docker container run --name rn2 diamol/ch06-random-number$ docker container cp rn1:/random/number.txt number1.txt$docker container cp rn2:..
도커 교과서 5장 도커 허브 등 레지스트리에 이미지 공유하기
·
📚 책/도커 교과서
5. 도커 허브 등 레지스트리에 이미지 공유하기도커의 가장 큰 장점이 공유다.우리가 개발한 소프트웨어를 모든 의존 모듈과 함께 패키징한다면 어떤 환경에서라도 소프트웨어를 쉽게 실행할 수 있다.5.1 레스트리, 리포지터리, 이미지 태그 다루기우리가 이미지를 내려 받는 서버를 도커 레지스트리 라고 한다.도커 레지스트리 중 도커 허브가 제일 유명하다.도커 이미지의 전체 이름(이미지 참조, image reference) 는 네 개의 요소로 구성된다.[이미지 레지스트리 서버]/[이미지 자성자의 계정 이름]/[이미지 레포지터리 이름, 애플리케이션 이름]:[이미지 태그]docker.io/diamol/golang:latest이미지 레지스트리 서버의 기본값은 docker.io 이고, 태그의 기본값은 latest 이다.만..
도커 교과서 4장 애플리케이션 소스 코드에서 도커 이미지 까지
·
📚 책/도커 교과서
4. 애플리케이션 소스 코드에서 도커 이미지 까지4.1 Dockerfile 이 있는데 빌드 서버가 필요할까?팀 단위의 작업이 진행될 경우 빌드 도구 통일이 필요하다.해당 작업은 유지 보수를 위한 큰 오버헤드가 발생한다.그러나, Dockerfile 로 빌드 툴 체인을 한 번에 패키징해서 공유해서 사용한다면 유지 보수 비용이 대폭 감소하게 된다.FROM diamol/base AS build-stageRUN echo 'Building...' > /build.txtFROM diamol/base AS test-stageCOPY --from=build-stage /build.txt /build.txtRUN echo 'Testing...' >> /build.txtFROM diamol/baseCOPY --from=te..
도커 교과서 3장 도커 이미지 만들기
·
📚 책/도커 교과서
3장 도커 이미지 만들기3.1 도커 허브에 공유된 이미지 사용하기docker container run 명령을 사용할 때 필요한 이미지 중 로컬 컴퓨터에 없는 이미지가 있으면 이미지를 자동으로 내려받는다.이 과정은 소프트웨어 배포 기능이 도커 플랫폼에 완전히 내장됐기 때문이다.docker impage pull 명령어를 통해 명시적으로 원하는 이미지를 내려받을 수 있다.도커는 해당 이미지를 내려받기 위해 가장 먼저 Docker Hub에 접근한다.이미지를 제공하는 저장소를 레지스트리(Registry) 라고 하고, 도커 허브는 무료로 제공되는 공개 레지스트리다.$ docker image pull diamol/ch03-web-pingUsing default tag: latestlatest: Pulling from..
MyeongDev
MyeongDev