도커는 컨테이너라는 경량 단위로 애플리케이션을 실행하는 기능을 제공하는 플랫폼이다.
클라우드 환경으로 이주하기 위해선 "서비스로서의 인프라(IaaS)"와 "서비스로서의 플랫폼(PaaS)"라는 두 선택지 중 하나를 선택해야 한다.
PaaS : 애플리케이션의 각 컴포넌트를 하나씩 클라우드의 managed service로 옮겨야함, 특정 클라우드에 종속되는 결과를 낳음, 비용은 절감 가능
IaaS : 각 컴포넌트를 가상 머신에서 동작시키게 됨, 특정 클라우드에 종속되는 것은 막을 수 있음, 비용은 증가
-> docker는 위의 단점을 극복 가능하며 애플리케이션의 각 컴퓨넌트를 컨테이너로 이주한 다음 도커 클러스터 등에서 전체 애플리케이션을 실행할 수 있음, 즉 PaaS의 운영비와 IaaS의 이식성을 모두 가져갈 수 있다.
docker에선
애플리케이션의 각 컴포넌트는 컨테이너에서 동작한다.(각 컴포넌트는 가성 머신처럼 독립적이고, 경량이며, managed service만큼 효율적)
위에서 컨테이너로 동작한다했으므로, 애플리케이션을 컨테이너로 이주해야하는데 이때 어느 정도의 비용은 필요하다.
우선 기존 설치 절차를 Dockerfile이라는 스크립트로 재작성해야하며, 배포 관련 사항도 재작성해야한다. 이로써 어떤 환경에서든 동일한 기술 스택에서 그대로 동작한다.
컨테이너를 활용하면 거의 모든 애플리케이션을 클라우드에서 실행할 수 있다. 한단계 더 깊이 들어가서, 기존 애플리케이션의 구조가 낡은 모놀리식이라면 프로그램의 효율은 굉장히 떨어질 것이다.
도커로 이주하는 과정은 애플리케이션의 낡은 설계를 바꾸는 것이다. 앞서 말했던 단계처럼 Dockerfile 스크립트와 도커 컴포즈 문법을 따라 애플리케이션을 단일 컨테이너로 옮긴다. 이것만으로 통짜 애플리케이션의 컨테이너 이주가 끝난다.
무언가 말이 굉장히 어려워 보이지만 그냥 작고 독립된 단위로 만들 수 있다는 것이다.
분산 애플리케이션을 빌드하고 실행하는 데는 별도의 개발 도구가 필요하지 않다는 뜻이다.
NodeJS로 프런트 엔드를 구현하고, 자바와 GO언어로 API를 사용했을 때, 모두 도커 컨테이너에서 동작한다.
개발 팀은 모든 프로젝트에서 같은 도구, 프로세스, 런타임을 사용하기를 원하는데 이를 도커가 만족시킬 수 있다. 도커 클러스트를 구축하면 모든 제품으 ㅣ빌드, 배포, 운영을 같은 도구와 방법으로 수행할 수 있다.
데브옵스는 기민한 소프트웨어 유지 보수를 위해 애플리케이션의 전체 생애주기를 담당하는 전담 팀을 둔다. 운영자와 개발자가 사용하는 도구와 기술이 다른데 이때 컨테이너로의 전환을 통해 데브옵스 도입을 촉진할 수 있다.
책의 목표는 도커의 사용법을 배우는 것이다. 저수준에서의 내용은 다루지 않는다.
오우 하자마자 문제에 직면했다.
계속 돈다..... 이전에 설치한 적 있었는데 그걸 그대로 실행했더니 문제가 발생했다.
https://www.virtualizationhowto.com/2023/04/docker-desktop-starting-forever-windows-11-or-10-error/
여기에 일단 들어가서 해결을 해보려했는데 똑같은 행동을 반복해야해서
uninstall하고 다시 깔기로 했다.
리트 1회차:
https://goddaehee.tistory.com/313
해당 사이트를 이용해 설치하는데
wsl --set-default-version 2
여기서 진행이 되지 않았다. 그냥 실행만 되고, 완료되었다는 말이 나오지 않았다.
3번의 부팅을 통해
https://hbase.tistory.com/291
수정을 했다.
그 밖에는 책에 나온 대로 했더니 됐다.
다음 장에서부터 바로 실습할 수 있다는 자랑 글이다.