이번 포스팅은 책의 CH04. 스웜을 이용한 실전 어플리케이션 개발 내용을 공부하고 정리한 내용이다. 도커를 사용하여 어플리케이션을 개발하는 흐름을 이해하고 스웜을 이용한 배포에 초점을 맞추어서 자세한 코드를 다 확인하면서 가지는 않음을 미리 명시한다. 아키텍처 구성 간단한 TODO App을 만들어 보려고 한다. 대략적인 아키텍처는 다음과 같다. 데이터베이스로는 MySQL, API는 Restful API(예제 코드는 Go 언어 기반), 웹 어플리케이션(Vue / React), Nginx 프록시 서버 이렇게 네 가지로 크게 구분해서 구성 요소를 생각해 볼 수 있다. Nginx의 경우 어플리케이션 프론트엔드 서버 및 API 앞단의 리버스 프록시 역할을 하며, 캐싱이나 라우팅 등에도 사용이 된다. 이전 포스팅..
docker
이번 실습은 여러 호스트를 다루면서 컨테이너를 배치하는 방법에 대해서 다뤄보는 튜토리얼이다. 이번 튜토리얼에서는 도커 스웜(docker swarm)을 사용한다. 도커 스웜은 여러 도커 호스트를 클러스터로 묶어주는 컨테이너 오케스트레이션 도구이다. 여러 도커 호스트를 사용하여 확장성 있는 어플리케이션을 만들기 위해서는 (거의) 필수적이다. 오케스트레이션 도구를 사용하면 어느 도커 호스트에 어떤 컨테이너를 배치해야 하는지, 서로 다른 호스트에 위치한 컨테이너 간의 통신은 어떻게 해야 하는지 등의 조율을 수월하게 할 수 있다. 여기서 잠깐, 도커에서 쓰이는 다양한 도구들의 역할을 복습하고 가자 도커 컴포즈(docker-compose) : 여러 컨테이너로 구성된 도커 어플리케이션을 관리 (주로 단일 호스트) 도..
이번에는 실습을 해보는 포스팅을 해 보려고 한다. 참고로 이 실습은 유데미에서 내가 듣고 있는 도커 강의에서 다루었던 실습이다. https://www.udemy.com/course/docker-mastery/ 이 강의에서 도커 컴포즈 파일 관련해서 다루었던 실습을 정리해 보려 한다. 이번 실습의 목표는 Drupal에서 새로운 소프트웨어가 나왔는데 이 새로운 기능들이 제대로 잘 작동하는지 도커로 커스텀 이미지를 빌드해서 테스트를 해보는 것이다. 아주 간단하고 빠르게 말이다. 여기서 도커 컴포즈 파일을 사용해야 한다. 나는 이전 과제에서 drupal 웹사이트를 도커로 띄우는 과제를 하나 했었고, 여기에서 이어서 진행한다. 빈 디렉토리에 Dockerfile을 하나 만든다. 이 도커파일에 대해서 설명을 하면, ..
이전 포스팅에서 도커 이미지가 무엇인지, 컨테이너가 무엇인지를 알아 보았다. 이번에는 좀 더 실용적인 방법에 대한 고민과 함께 퍼시스턴트 데이터와 볼륨에 대해서 연결해서 설명해 보려고 한다. 도커를 사용해 시스템을 구성한다는 것은 대부분 자신이 만든 어플리케이션의 컨테이너는 물론이고 도커 허브에 공개된 어플리케이션이나 미들웨어 이미지로 만든 컨테이너가 서로 협력하는 스택을 구축하는 것이다. 실제 운영에서는 어플리케이션을 컨테이너 안에 어떻게 배치하는지가 매우 중요하다. 컨테이너 하나가 어느 정도의 책임을 맡는 것이 적정 수준일까? 단일 컨테이너의 시스템 내 비중을 어떻게 결정하는지 알아보자. 정기적으로 어떤 작업을 실행해야 하는 컨테이너가 있다고 가정하자. 스케줄러는 직접 갖춘 어플리케이션도 있겠지만, ..
오늘은 도커 이미지와 컨테이너에 대해서 정리해 보고자 한다. 이번 내용은 도커 공식 사이트에서 도커를 설치하고 난 후 진행한다. 회원가입 및 설치는 그렇게 어렵지 않으니 아마 쉽게 할 수 있을 것이다. 설치를 마치고 나서 커맨드에 $ docker version을 입력후 엔터를 누르면 아래와 같이 나온다. 도커 이미지와 컨테이너는 도커를 이해하는데 가장 기본적인 개념이므로 확실하게 짚고 넘어가야 한다. 각각의 역할을 간단하게 정리하면 다음과 같다. 도커 이미지 : 도커 컨테이너를 구성하는 파일 시스템과 실행할 어플리케이션 설정을 하나로 합친 것으로, 컨테이너를 생성하는 템플릿 역할을 한다. 도커 컨테이너 : 도커 이미지를 기반으로 생성되며, 파일 시스템과 어플리케이션이 구체화되어 실행되는 상태이다. 간단한..
이번 포스팅을 시작으로 도커를 처음 시작하는 사람이 알아야 할 내용 및 실습 방법에 대한 포스팅을 해 보려고 한다. 도커란 무엇인가? 도커는 컨테이너형 가상화 기술을 구현하기 위한 상주 어플리케이션과 이 어플리케이션을 조작하기 위한 명령행 도구로 구성되는 프로덕트이다. 어플리케이션 배포에 특화되어 있기 때문에 어플리케이션 개발 및 운영을 컨테이너 중심으로 할 수 있다. 웹 어플리케이션을 개발한다고 가정해 보자. 로컬에 Apache나 Nginx 같은 웹 서버를 구축한다고 생각해 보자. 가상 환경에 운영 환경과 같은 운영 체제를 설치하고 환경 구축 작업을 해야 한다. 이 때 로컬 환경에 도커만 설치하면 몇 줄짜리 구성 파일과 명령어 한 줄로 어플리케이션이나 미들웨어가 이미 갖추어진 테스트용 가상환경(도커 컨..