본문 바로가기

Container

(18)
[Kubernetes] 쿠버네티스의 리소스 관리와 설정 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서는 지금까지 배운 쿠버네티스의 오브젝트들인 파드, 레플리카셋, 디플로이먼트, 서비스와 같은 리소스들을 효율적으로 관리할 수 있도록 하는 것들에 대해 배워보도록 하자. 그 중에서도 이번 포스팅에서는 네임스페이스, 컨피그맵, 시크릿의 사용 방법에 대해 소개하려고 한다. 1. 리소스를 구분하는 장벽, 네임스페이스(Namespace) 이전에 배웠던 도커나 도커 스웜을 배웠을 때는 배포한 컨테이너들을 논리적으로 구분하는 방법이 없었다. 예를 들어, 100개의 도커 컨테이너를 배포한 후, docker ps -a 명령어를 사용하면 배포한 1..
[Kubernetes] 파드를 외부로 노출하기: 서비스(Service) 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서는 저번 포스팅에서 소개한 쿠버네티스 기초 개념에 포함되는 서비스(Service)라는 오브젝트에 대해서 알아본다. 저번 포스팅 마지막에 배운 디플로이먼트라는 오브젝트를 활용하면 동일한 역할을 하는 파드 여러개를 한 번에 생성하거나 삭제하고, 파드의 생애주기까지 관리해주는 등 손쉽게 레플리카셋(파드들의 모음)을 관리할 수 있었다. 하지만 디플로이먼트가 수행하지 못하는 것이 한 가지 있는데, 외부(외부라 함은 로컬 또는 쿠버네티스 클러스터의 외부)에서 파드로 접근이 불가능한 것이다. 이를 가능하도록 하기 위해서 서비스라는 오브젝트를..
[Kubernetes] 쿠버네티스의 기초: 팟, 레플리카셋, 디플로이먼트 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서는 쿠버네티스의 기초인 팟(Pods), 레플리카셋(Replica set), 디플로이먼트(Deployment) 개념에 대해 배워보도록 하자. 쿠버네티스에 대해 본격적으로 다루어보기 전에 쿠버네티스의 몇 가지 특징에 대해서 살펴보고 넘어가자. A. 쿠버네티스는 모든 리소스를 '오브젝트(Object)'로 다룬다 먼저, 쿠버네티스에서의 모든 리소스는 '오브젝트'라고 불리는 형태로 관리된다. 예를 들어, 이전에 배웠던 도커 스웜에서 제어 단위였던 '서비스'라는 것은 컨테이너들의 집합을 의미한다고 했다. 이것도 일종의 오브젝트라고 부른다...
[Kubernetes] 쿠버네티스 개념과 설치 방법 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서 부터는 쿠버네티스 시리즈 포스팅을 게시한다. 그 첫 챕터로, 쿠버네티스에 대한 개념에 대해 알아보고, 쿠버네티스를 설치하는 여러가지 방법에 대해 알아보자. 1. 쿠버네티스는 뭘까? 지난 시간까지 도커 시리즈 포스팅으로 도커엔진에 대해 다루는 방법부터 해서 여러 호스트의 도커를 관리하는 도커 스웜, 여처 개의 컨테이너를 한 번에 관리하는 도커 컴포즈 등에 대해 배워왔다. 그런데 이러한 개념들을 한 군데로 모아 사용할 수 있는 프로젝트가 있는데, 그것이 바로 쿠버네티스이다. 쿠버네티스는 도커 스웜 모드처럼 여러 대의 호스트의 도커..
[Docker] 여러 개의 컨테이너를 하나로 묶어 관리하자, Docker Compose 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서는 (이전에 얕게나마 배웠던) 여러 개의 컨테이너를 하나의 서비스로 정의하여 컨테이너 묶음으로 관리할 수 있도록 작업 환경을 제공하는 도커 컴포즈에 대해 배워보자. 1. 도커 컴포즈가 왜 필요할까? 도커 컴포즈를 본격적으로 배우기에 앞서 근본적인 질문부터 해보자. 도커 컴포즈를 배우고 사용해야 하는 이유는 무엇일까? 이유는 바로 하나의 애플리케이션 서비스는 보통 여러 개의 컨테이너 서비스들이 동시에 동작하는 것으로 구성되기 때문이다. 지금까지 우리는 일반적인 도커 엔진에서 컨테이너 단위로 제어할 때도, 도커 스웜을 배울 때도 하..
[Docker] 여러 호스트의 도커를 관리하자, Docker Swarm 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 저번 포스팅까지는 하나의 호스트 안에서의 도커 엔진을 사용하는 방법에 대해 알아보았다. 이번 포스팅에서는 이제 여러 호스트 즉, 여러 개의 호스트 머신들 각각에 설치되어 있는 도커 엔진들을 관리하는 방법 중 하나인 도커 스웜에 대해 알아보도록 하자. 1. 왜 도커 스웜을 쓸까? 실제 프로덕션 환경에서는 하나의 호스트에 설치되어 있는 도커 엔진으로만 모든 컨테이너를 관리하지는 않는다. 이유는 생각보다 간단하다. 그 도커 엔진이 설치되어 있는 호스트 즉, 물리 머신이 갑자기 다운되거나 장애가 발생하면 그 즉시 프로덕션은 더 이상 사용자들에게 서비..
[Docker] 서버로서의 역할, Docker Daemon 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 저번 포스팅까지는 도커 엔진을 사용하는 방법을 알아보았다. 구체적으로, 컨테이너, 이미지를 생성하고 관리하는 방법, 더 나아가 Dockerfile을 가지고 나만의 이미지를 생성하는 방법에 대해서도 학습했다. 이번 포스팅에서는 도커 자체를 다뤄볼 수 있는 도커 데몬에 대해서 알아보자. 도커 데몬에 대해 이해하고 도커 자체적으로 설정할 수 있는 여러가지 옵션을 활용하면 이미지와 컨테이너를 좀 더 쉽게 사용할 수 있게 될 것이다. 도커 데몬에 대해서 알아보기 전에 도커가 어떤 구성요소로 이루어져 있는지부터 이해해야 한다. 1. 도커의 구조 이제부터..
[Docker] 도커 이미지 다루어보기, 그리고 Dockerfile 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서는 도커 이미지에 대해 알아보고, 이미지를 다루어보는 방법에 대해 알아보자. 그리고 나만의 이미지를 만드는 데 활용되는 Dockerfile에 대해서도 배워보자. 참고로 Dockerfile에 대해서는 얕게나마 생활코딩 강의를 통해 배운적이 있었다. Dockerfile이 무엇인지에 대해 모른다면 간단히 이전 포스팅을 읽고 오는 것도 좋을 듯 하다. 1. 도커 이미지를 생성하자, docker commit 리눅스 배포판 중 Ubuntu는 패키지를 apt 레포지토리에서, CentOS는 패키지를 yum 레포지토리에서 설치하는 것처럼, 또 ..
[Docker] 도커 컨테이너 다루어보기 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서는 도커 엔진의 핵심 중 하나인 도커 컨테이너를 다루는 방법에 대해 알아보도록 하자. 1. 컨테이너 생성하기 가장 먼저 배워볼 것은 컨테이너를 생성하는 방법이다. docker run 명령어로 실행할 수 있는데, 이 명령어는 컨테이너를 생성하고 실행까지 할 수 있는 명령어이다. 명령어 형식은 아래와 같다. 공식 문서에 가면 여러가지 인자가 있긴 하지만, 여기서는 자주 쓰이며 핵심적인 명령어 인자만 알아보도록 하자. $ docker run [OPTIONS] [IMAGE] 아래와 같이 ubuntu:20.04 이미지를 활용해서 컨테이너..
[Docker] 도커란, 그리고 도커 엔진의 이미지와 컨테이너 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅을 시작으로 도커와 쿠버네티스 관련 개발 서적을 통해 본격적으로 깊이 있는 공부를 시작해보려고 한다. 도커 관련해서는 이전에 생활코딩 이고잉님의 기초 강의만 공부했었고 제대로 동작 원리와 깊이 있는 공부를 하지 못했었다. 최근 컨테이너를 기반으로 하는 인프라를 구성하는 트렌드로 가게 되면서 도커와 쿠버네티스에 대한 공부를 언젠가는 해야 한다고 생각했다. 그 첫 번째 주제로 도커란 어떤 개념인지 알아보고 도커라는 컨테이너를 생성하고 관리하는 주체이자 핵심인 도커 엔진의 이미지와 컨테이너에 대해 알아본다. 1. 가상머신과 도커 컨테이너..
[Docker] Docker Compose로 복잡한 컨테이너를 한 번에! 🔊 해당 포스팅은 이고잉님의 생활코딩 오픈튜토리얼의 Docker 입문 수업을 듣고 제 개인적으로 정리하는 목적하에 작성되는 포스팅입니다. 보다 자세한 강의는 여기를 참고해주세요. 이고잉님께서 다시 도커 강의를 제작하신 걸 보고 바로 들으러 갔다! 이번 포스팅에서는 Docker Compose 관련 명령어에 대해 알아보자. 새로운 무엇인가를 배울 때는 항상 그 새로운 무엇인가가 왜 등장했는지를 생각해 보면 이해가 더 수월한 것 같다. 도커 Compose 명령어는 그렇다면 왜 등장했을까? 우선 아래와 같이 컨테이너를 만드는 도커 명령어가 있다고 가정해보자.(해당 명령어의 원본은 이고잉님의 Github 계정인 여기에 있음을 필히 알립니다!) 위 사진은 2개의 컨테이너를 만드는 명령어인데, 딱 봐도 엄청나게 복잡..
[Docker] 내가 만든 image를 Github Container 레지스트리에 업로드하기 🔊 해당 포스팅은 이고잉님의 생활코딩 오픈튜토리얼의 Docker 입문 수업을 듣고 제 개인적으로 정리하는 목적하에 작성되는 포스팅입니다. 보다 자세한 강의는 여기를 참고해주세요. 이번 포스팅에서는 Docker에서 내가 만든 이미지를 Docker Hub 레지스트리가 아닌 Github Container 레지스트리에 업로드 하는 방법에 대해 알아보자. 저번 포스팅에서 내가 만든 이미지를 Docker Hub 레지스트리에 push하고 pull 하는 방법에 대해 배워보았다. 그런데 이러한 훌륭한 Docker Hub을 납두고 왜 Github의 Container 레지스트리를 이용할까? Docker Hub은 Private한 레지스트리 즉, 모두에게 공개되지 않고 나만 또는 나와 협업하는 특정 사람들 간에만 공유하기 위한..
[Docker] 내가 만든 image를 Docker Hub에 Push시켜 공유하자 🔊 해당 포스팅은 이고잉님의 생활코딩 오픈튜토리얼의 Docker 입문 수업을 듣고 제 개인적으로 정리하는 목적하에 작성되는 포스팅입니다. 보다 자세한 강의는 여기를 참고해주세요. 이번 포스팅에서는 내가 만든 이미지를 Docker Hub이라는 레지스트리 사이트에 Push 시켜서 공유하는 방법에 대해 알아보자. Docker Hub은 Docker 포스팅 초반에도 소개했다시피 누구나 자기만의 이미지를 만들어 공유할 수 있고 pull해서 다운로드 받을 수 있는 사이트이다. 마치 Github의 public 레포지토리 처럼 말이다. 가장 먼저 해야할 것은 Docker Hub 사이트로 가서 회원가입을 하고 Repository 탭에 들어가서 내가만든 이미지를 push 시킬 개인 레포지토리를 생성한다. 이 때 모두가 볼 ..
[Docker] build와 Dockerfile로 나만의 이미지를 만들어보자 🔊 해당 포스팅은 이고잉님의 생활코딩 오픈튜토리얼의 Docker 입문 수업을 듣고 제 개인적으로 정리하는 목적하에 작성되는 포스팅입니다. 보다 자세한 강의는 여기를 참고해주세요. 저번 포스팅 말미에서 잠깐 소개한 build 명령어와 Dockerfile 파일로 내가 만든 컨테이너를 나만의 이미지로 만드는 방법에 대해 소개했었다. 이번 포스팅에서는 그것들에 대한 사용법을 좀 더 자세하게 알아보려고 한다. 그런데 저번 포스팅에서 내가 만든 컨테이너를 나만의 이미지로 생성하는 방법 중 하나로 commit 명령어에 대해 알아보았다. 그렇다면 build 명령어와 Dockerfile을 활용하는 방법과 무슨 차이가 있을까? 가시적인 가장 큰 차이점은 내가 만든 이미지가 어떤 과정 즉, 어떤 프로그램이 설치되고 어떤 ..
[Docker] 내가 만든 Container를 image로 만들자!(commit, build, Dockerfile 활용하기) 🔊 해당 포스팅은 이고잉님의 생활코딩 오픈튜토리얼의 Docker 입문 수업을 듣고 제 개인적으로 정리하는 목적하에 작성되는 포스팅입니다. 보다 자세한 강의는 여기를 참고해주세요. 이번 포스팅에서는 Docker를 활용해 내가 만든 컨테이너를 이미지로 만드는 방법인 commit 활용방법에 대해 알아보려고 한다. Docker 관련 명령어의 관계를 도식화 하게되면 다음과 같다. 우리는 보통 Docker Hub에서 누군가가 만들어 놓은 이미지를 pull 해서 그 이미지에서 컨테이너를 내 맘대로 생성해 사용한다. 그렇다면 우리도 우리만의 이미지를 만들 수 있지 않을까? 예를 들어, 우리가 ubuntu 라는 리눅스 이미지를 pull 해서 컨테이너를 생성 후 생성한 컨테이너 안에 Python이나 git을 설치했다. 그..
[Docker] Container의 파일시스템과 Host의 파일시스템 연결하기 🔊 해당 포스팅은 이고잉님의 생활코딩 오픈튜토리얼의 Docker 입문 수업을 듣고 제 개인적으로 정리하는 목적하에 작성되는 포스팅입니다. 보다 자세한 강의는 여기를 참고해주세요. 저번 포스팅 말미에서 잠깐 언급했던 Docker에서 만든 컨테이너의 파일 시스템과 Docker를 설치한 Host 서버(로컬 컴퓨터)의 파일 시스템을 연결하는 방법에 대해 알아보려고 한다. 사용할 예시는 Docker에서 제공하는 아파치 웹서버 소프트웨어인 httpd 라는 이미지를 pull 하고 그 위에 컨테이너를 만들자. 그리고 아파치 웹서버에 기본적으로 내장되어 있는 index.html을 어떻게 Host의 파일시스템과 동기화시키는지 방법에 대해 알아보자. 그 전에 앞서 Docker에서 컨테이너를 하나 만들고 그 컨테이너 안에 있..
[Docker] Image를 pull 하고 Container를 run 시키기 🔊 해당 포스팅은 이고잉님의 생활코딩 오픈튜토리얼의 Docker 입문 수업을 듣고 제 개인적으로 정리하는 목적하에 작성되는 포스팅입니다. 보다 자세한 강의는 여기를 참고해주세요. 저번 포스팅에 이어서 Docker를 잘 설치했으니 이제 Docker에서 CLI로 Image를 pull 하고 Container를 run 시켜보자. pull 할 image는 아파치 웹서버인 httpd를 다운로드 받아보자. 1. Docker에서 Image를 Pull 시켜보자 image를 pull 하는 것은 간단하다. 다음의 명령어를 사용하면 된다. docker pull httpd 잘 설치되었다면 위와 같이 나오게 된다. 그러면 설치한 image의 목록을 확인해보자. 명령어는 다음과 같다. docker images 위 화면을 보면 방금..
[Docker] Docker를 시작해보자 🔊 해당 포스팅은 이고잉님의 생활코딩 오픈튜토리얼의 Docker 입문 수업을 듣고 제 개인적으로 정리하는 목적하에 작성되는 포스팅입니다. 보다 자세한 강의는 여기를 참고해주세요. Docker는 항상 궁금했지만 다가가기 어려웠던 개념이었다. 무엇인가 백엔드 지식과 관련이 있는 것 같아 지레 겁먹고 어떤 개념인지 조차 알아보지도 않았던 것이 팩트이다. 얼마 전 이고잉님께서 오픈 튜토리얼스로 Docker에 대한 입문 강의를 제작해주셨고 바로 강의를 들으러 갔다. 이번 강의도 다가가기 쉽고 강의 시간도 매우 짧을 뿐더러 설명도 잘해주셨다! 심지어 무료 강의이다. 개인적으로 Docker가 무엇인지 모르겠다면 꼭 들어보자. Docker를 다루는 엔지니어가 아니더라도 Docker에 대한 이해가 전제된다면 추후에 같이..