docker 4

Container 101 - (1) Introduction

지금 여러분이 IT업계에서 일하고 있다면 컨테이너라는 단어를 언젠가 한번은 꼭 들어봤을 것이다. 단순히 가상화 기술이라고 하기엔 그 범위와 중요성이 너무 커서, 더 이상 컨테이너 기술을 모른다면 Cloud Native 시대를 생존하기 어려울 지경이다. 도대체 컨테이너가 뭔데, 얼마나 좋길래 이렇게 난리인걸까? 그 질문에 앞서 '왜 컨테이너가 필요할까?'를 먼저 생각해 볼 필요가 있다. 다음과 같이 정말 원시적인 호스팅 환경을 예로 들겠다. 서버 1대에 여러개의 어플리케이션을 배포하였다. 어플리케이션은 단독으로 실행되지 않고, 패키지나 라이브러리(ex: libssl.so)와 같은 Dependency가 존재하며 서로 같은 라이브러리를 공유할 수 있다. 이제 특정 어플리케이션을 업그레이드하면서 dependec..

Cloud 2022.01.10

Container Runtime과 Docker

Container Runtime Docker나 Kubernetes 사용자라면 컨테이너 런타임(Container Runtime)이라는 단어를 종종 들어봤을 것이다. 컨테이너의 개념은 상당히 명확하지만 이에 반해 컨테이너 런타임이 구체적으로 어떤 역할을 맡고 있는지 설명하기란 쉽지 않다. Docker 자체가 컨테이너 런타임인가? kubelet은 Docker와 어떤 방식으로 상호작용하여서 컨테이너를 실행하는가? 이번 시간엔 컨테이너 런타임의 정확한 개념과 기능에 대해 알아보고자 한다. Docker와 Container 기술 표준 우선 Docker의 역사에 대해 짚고 넘어갈 필요가 있다. 2013년에 공개된 Docker는 그동안 어렵게만 여겨졌던 Linux 컨테이너 기술을 쉽게 다룰 수 있도록 아래와 같은 기능을..

Kubernetes 2021.03.09

CI를 위한 Jenkins, GitHub, Docker Hub 연계

본격적인 CI 구성을 위해 Jenkins와 GitHub 그리고 Docker Hub를 연계하는 방법에 대해 설명한다. k8s 위에 Jenkins를 배포하는 방법에 대해선 이전 포스트를 참고한다. 실습 환경에서 CI는 다음과 같은 일련의 순서로 이루어진다고 가정하자. 1. 개발자가 자신이 작업한 코드를 GitHub Repository에 반영 2. Jenkins는 해당 Repository를 Checkout하여 Docker Image로 빌드 3. 빌드 완료 후 Docker Hub로 Image를 Push 실제 CI 과정에선 코드 리뷰나 테스트 등의 과정이 포함되어야 하나 이번 실습에선 생략하도록 한다. 우선은 Jenkihns가 GitHub에서 Code를 가져올 수 있도록 Credential을 추가하자. GitHu..

CI-CD 2021.02.20

Linux Namespaces

Namespace는 프로그래밍 언어 외에 다양한 컴퓨팅 분야에 널리 사용되는 개념이다. 하나의 namespace 안에서 이름과 개체(또는 자원)은 1:1로 매칭된다. 일반적인 정의는 다음과 같다. In computing, a namespace is a set of signs(names) that are used to identify and refer to objects of various kinds. A namespace ensures that all of a given set of objects have unique names so that they can be easily identified. - Wikipedia 예를 들어, C++, Java와 같은 프로그래밍 언어에서는 동일한 Namespace 안..