본문 바로가기

개발 관련/Docker

(11)
4장. 쿠버네티스를 이루는 컨테이너 도우미, 도커 ✏️ 도커란? 도커와 쿠버네티스는 자주 엮어서 언급되곤 한다. 이는 쿠버네티스를 이루는 기본 오브젝트가 파드고, 파드는 컨테이너로 이루어져 있으며, 컨테이너를 만들고 관리하는 도구가 도커이기 때문이다. 파드는 워커 노드라는 노드 단위로 관리하며, 워커 노드와 마스터 노드가 모여 쿠버네티스 클러스터가 된다. 또한 파드는 1개 이상의 컨테이너로 이루어져 있다. 파드는 쿠버네티스로부터 IP를 받아 컨테이너가 외부와 통신할 수 있는 경로를 제공하기도 한다. 파드가 컨테이너들이 정상적으로 작동하는지 확인하고 네트워크나 저장 공간을 서로 공유하므로 컨테이너들은 마치 하나의 호스트에 존재하는 것처럼 작동할 수 있다. 위 그림과 같이 컨테이너를 돌보는 것이 파드고, 파드를 돌보는 것이 쿠버네티스 워커 노드이며, 워커 ..
3장. 컨테이너를 다루는 표준 아키텍처, 쿠버네티스 리눅스 운영 체제의 커널 하나에서 여러 개의 컨테이너가 격리된 상태로 실행되는 인프라 환경을 말한다. 여기서 말하는 컨테이너란 하나 이상의 목적을 위해 독립적으로 작동하는 프로세스다. 쿠버네티스를 이용하게 되면서 컨테이너 인프라 환경을 좀 더 효율적으로 관리할 수 있게 되었다. 하지만 실제로 쿠버네티스는 컨테이너 오케스트레이션(orchestration)을 위한 솔루션이다. 오케스트레이션이란 복잡한 단계를 관리하고 요소들의 유기적인 관계를 미리 정의해 손쉽게 사용하도록 서비스를 제공하는 것을 의미하는데, 다수의 컨테이너를 유기적으로 연결, 실행, 종료뿐만 아니라 상태를 추적하고 보존하는 등 컨테이너를 안정적으로 사용할 수 있게 만들어주는 것이 컨테이너 오케스트레이션이다. 컨테이너 오케스트레이션을 제공하는 ..
2장. 테스트 환경 구축하기 1장에서 설명한 것과 같이 개인 노트북이나 PC에 가상 환경을 구축하고 그 안에 인프라 환경을 구성하는 순서로 실습이 진행된다. 2장에서는 가상 환경을 구성하는 데 사용하는 도구를 살펴보고, 직접 가상 환경을 구축한다. 이때 일관성 있는 결과를 얻기 위해 프로젝트 환경이 가능한 한 일정하게 생성되고 유지돼야 한다. 그래서 여기서는 코드로 하드웨어를 설정하고, 운영 체제를 설치하고, 네트워크를 구성하고, 개발 환경을 구축해주는 코드형 인프라(IaC; Infrastructure as Code)로 인프라 환경을 일정하게 유지하고 구성한다. 코드형 인프라를 지원하는 소프트웨어는 여러 개이지만, 그 중 베이그런트(Vagrant)가 가장 배우기 쉽고 사용 방법도 간단하다. 베이그런트는 버추얼박스(VirtualBox..
1장. 컨테이너 인프라 환경이란? 컨테이너 인프라 환경은 컨테이너를 중심으로 구성된 인프라 환경이다. 여기서 컨테이너(container)란, 하나의 운영 체제 커널에서 다른 프로세스에 영향을 받지 않고 독립적으로 실행되는 프로세스 상태를 의미한다. 💡 모놀리식 아키텍처(monolithic architecture) vs. 마이크로서비스 아키텍처(MSA; Microservices Architecture) 모놀리식 아키텍처는 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 통합돼 있는 구조를 의미한다. 소프트웨어가 하나의 결합된 코드로 구성되기 때문에 초기 단계에서 설게하기 용이하며 개발이 좀 더 단순하고 코드 관리가 간편하다. 하지만 서비스 운영 중 수정이 많은 경우, 어떤 서비스에서 이뤄진 수정이 연관된 다른 서비스에 영향을..
쿠버네티스(Kubernetes) 쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션 도구의 일종이다. 💡컨테이너 오케스트레이션이란? 시스템 전체를 통괄하고 여러 개의 컨테이너를 관리하는 일을 말한다. 여러 개의 컨테이너를 지휘하는 도구가 쿠버네티스다. 쿠버네티스는 k8s라고 줄여쓰기도 하는데, k와 s 사이에 8개의 글자가 있다는 의미의 약칭이다. 쿠버네티스는 여러 개의 컨테이너를 관리하기 위한 도구라고 설명했는데, 여러 개의 컨테이너란 서버를 의미한다. 때문에 일반적인 프로그래머가 쿠버네티스를 사용할 일은 드물다. 때문에 쿠버네티스로 어떤 일을 할 수 있는가에 초점을 맞춰야 한다. 쿠버네티스로 관리되는 시스템은 이를 전제로 개발해야 하는데, 그렇지 않다면 쿠버네티스의 이점을 제대로 살릴 수 없다. 도커는 한 대의 물리적 서버에서..
도커 컴포즈 도커 컴포즈는 시스템 구축과 관련된 명령어를 하나의 텍스트 파일(정의 파일)에 기재해 명령어 한번에 시스템 전체를 실행하고 종료와 폐기까지 한번에 하도록 도와주는 도구다. 도커 컴포즈는 시스템 구축에 필요한 설정을 YAML(YAML Ain't a Markup Language) 포맷으로 기재한 정의 파일을 이용해 전체 시스템을 일괄 실행(run) 또는 일괄 종료 및 삭제(down)할 수 있는 도구다. up 커맨드 - docker run 커맨드와 유사. 정의 파일에 기재된 내용대로 이미지를 내려받고 컨테이너를 생성 및 실행 down 커맨드 - 컨테이너와 네트워크를 정지 및 삭제. 볼륨과 이미지는 삭제하지 않음. 컨테이너와 네트워크 삭제 없이 종료만 하고 싶다면 stop 커맨드 사용 작성 내용은 도커 명령어와..
도커의 다양한 명령어들(복사, 볼륨 마운트 등) 💡 컨테이너와 호스트 사이 파일 복사 컨테이너에서 호스트로, 호스트에서 컨테이너로 파일 복사하기(양방향 모두 가능) 호스트 쪽 파일은 어디에 위치한 파일이라도 복사가 가능하며, 컨테이너 쪽에서도 파일을 복사할 경로를 지정 가능 컨테이너로 파일을 복사하는 커맨드(호스트 → 컨테이너) docker cp {호스트 경로} {컨테이너 이름:컨테이너 경로} 호스트로 파일을 복사하는 커맨드(컨테이너 → 호스트) docker cp {컨테이너 이름:컨테이너 경로} {호스트 경로} 즉, 다음과 같이 cp 커맨드 뒤로 '원본_경로 복사할_경로' 순서로 기재 docker cp 원본_경로 복사할_경로 파일명 변경하기 - mv mv /hone/사용자명/index.html /home/사용자명/index2.html 파일 삭제하기 -..
여러 개의 컨테이너를 연동해 실행하기 워드 프로세스는 웹 사이트를 만들기 위한 소프트웨어로, 워드프레스 컨테이너와 MySQL 컨테이너로 구성된다. 프로그램이 MySQL에 저장된 데이터를 읽고 쓸 수 있어야 하기 때문에 두 컨테이너가 연결돼 있어야 한다. 도커 네트워크를 생성하는 커맨드는 다음과 같다. # 도커 네트워크 생성하기 docker network create {network name} # 도커 네트워크 삭제하기 docker network rm {network name} 그럼 워드프레스와 MySQL 컨테이너 생성 및 실행을 해보겠다. 1. 네트워크를 생성한다. docker network create wordpress000net1 2. MySQL 이미지로 컨테이너를 생성 및 실행하는 명령어를 입력한다. 참고로 나는 Mac M1칩을 사용중..