無知

갈 길이 먼 공부 일기

도커 8

DevOps (1) | CI와 Github Action

지속적 통합(CI)이란? CI로 더 많이 알려진 지속적 통합은 동일한 소프트웨어 프로젝트에서 작업하는 모든 사람이 코드 베이스에 대한 변경 사항을 정기적으로 공유한 다음, 각 변경 후에 코드가 원래 의도한 대로 작동하는지 확인하는 방식입니다. 지속적 통합은 공동 작업, 자동화 및 짧은 피드백 주기를 촉진하는 데 목적을 둔, 소프트웨어 구축 및 릴리스에 대한 DevOps 접근 방식의 핵심을 이룹니다. 지속적 통합은 변경 사항을 소스/버전 관리 시스템에 정기적으로 커밋하는 작업부터 시작하므로 모두가 같은 기반에서 빌드하게 됩니다. 커밋할 때마다 빌드와 일련의 자동 테스트가 이루어져 동작을 확인하고 변경으로 인해 문제가 생기는 부분이 없도록 보장합니다. 지속적 통합은 그 자체로 유익하지만 CI/CD 파이프라인..

쿠버네티스 (2) | 도커와 쿠버네티스 튜토리얼

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 도커를 사용한 컨테이너 이미지 생성, 실행, 공유하기 도커 설치와 Hello World 컨테이너 실행하기 리눅스 머신에 도커 설치하기 도커 설치 + 가상머신 생성 가상 머신 내 도커 데몬 구동 호스트 OS에서 도커 클라이언트 실행 파일 사용 가상머신 내 도커 데몬과 도커 클라이언트 간 통신 Busybox 이미지로 Hello World 컨테이너 실행하기 busybox는 표준 UNIX 명령줄 도구를 합쳐놓은 단일 실행파일 터미널을 통한 실행 > 별도 설치 없이 전체 애플리케이션이 다운로드되어 실행됨. $ docker run busybox ec..

쿠버네티스 (1-5) | 쿠버네티스 소개

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 서론 쿠버네티스 등장 배경 기존 소프트웨어 앱 트랜드 = 모놀리스, Monolith 모놀리스 (Monolith) 애플리케이션 : 여러 모듈이 상호작용하는 로직을 하나의 프로그램 내에서 구동시키는 방식 ⇒ 소규모 서비스엔 어울릴 수 있으나, 서비스가 거대해질수록 소프트웨어의 확장성 및 유연성이 줄어든다는 치명적인 단점이 있음 마이크로서비스 (Microservices) : 모놀리스 방식을 대체하기 위한 개념으로, 여러 모듈을 독립된 형태로 구성 ⇒ 언어에 종속되지 않고 변화에 빠르게 대응할 수 있으며, 각 모듈의 유지/보수(관리)가 쉬움 ht..

쿠버네티스 (1-4-2) | 개발자가 바라보는 도커의 필요성

도커라는 게, 기존의 퍼블릭 클라우드 이미지 기반 인스턴스 관리 기법의 연장선이기도 하다. 가장 중요한 것은 왜 쓰기 시작했는가! 의 문제라 볼 수 있다. 시니어 개발자님이 공유해주신, 도커의 사용 이유에 대해 정리해보았다. 도커는 왜 쓰기 시작했을까? 도커는 커스텀 환경을 빠르게 구축할 수 있다 - 도커 이미지 일단, 이미지의 경우, 결국은 개발 환경과 연관된다. 개발자 입장에서, 서버를 만들어서, 서버에서 개발하기도 한다. 예를 들어 자바 환경이라 하면, 서버나 클라이언트 환경을 꾸미고 나서, 환경 변수 설정 후 개발한다. 그런데 도커를 쓰고 나서는, 환경을 내부적으로 구성해서 독립적으로 환경을 빠르게 만들 수 있다. 우분투의 JVM 1.8을 빠르게 빌드해서 개발하고 싶을 때, 예전에는 서버를 띄우고..

쿠버네티스 (1-4-1) | 도커 네트워크와 의존성 문제

앞선 논의들을 정리하며 도커에서 쿠버네티스로 생태계가 나아간건지 이해해보자. 컨테이너 기술이란 컨테이너란, 애플리케이션 구동 환경을 추상화할 수 있는 패키징 기술을 뜻한다. OS의 커널은 공유하면서 사용자마다 각각 격리된 컴퓨팅 자원을 제공해주는 가상화 기술이다. 물류 시장에서 물건을 옮기는 규격화된 박스이자 프로토콜이 컨테이너이듯이, 애플리케이션도 컨테이너라는 표준화된 방식으로 배포한다면, 어떤 환경이든 동일한 방식으로 배포가 가능하다는 측면에서 의의를 갖는다 OS 커널이란? 커널은 컴퓨팅 하드웨어 리소스를 관리하는 메커니즘을 관리하는 것이다. 커널의 기능 커널은 다음과 같은 4가지 기능을 수행합니다. 메모리 관리: 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지를 추적합니다. 프로세스 관리: ..

쿠버네티스 (1-3) | 도커 이미지 멀티 스테이지 빌드 및 경량화

멀티 스테이지 빌드를 통한 도커 이미지 경량화 멀티 스테이지 빌드란? 대부분의 사람들은 한 프로젝트의 하나의 Dockerfile만 존재하는 것이 익숙했습니다. 여러 개의 Dockerfile은 유지보수의 편의성도 떨어뜨리고, 각각의 단계에 순서 의존성이 있는 만큼 관리도 복잡해졌죠. 예를 들어 바이너리 빌드가 끝나기 전에 실행 이미지를 만들 수는 없으니까요. 이후 많은 사람들이 불편함을 느끼자, 여러 단계의 이미지 빌드 과정을 하나의 Docerfile에서 관리하기 위해 멀티 스테이지 빌드가 등장했습니다. https://lynlab.co.kr/blog/89 Docker Multi Stage란? 컨테이너 이미지를 만들면서 빌드 등에는 필요하지만 최종 컨테이너 이미지에는 필요 없는 환경을 제거할 수 있도록 단계..

쿠버네티스 (1-2) | 도커 파일 명령어 정리

# Alpine 3.7 버전 golang 1.10.1 이미지를 사용 FROM golang:1.10.1-alpine3.7 # 8080 포트 오픈 EXPOSE 8080 # 빌드할 머신에 있는 main.go 파일을 컨테이너에 복사 COPY ./main.go ./ # 컨테이너 내부에서 명령어 실행 RUN go build -o ./go-app ./main.go # 실행 계정을 nobody로 변경 USER nobody # 컨테이너가 기동할 때 실행할 명령어 정의 ENTRYPOINT ["./go-app"]

쿠버네티스 (1) | 도커의 기본 개념

본 글은 쿠버네티스 완벽 가이드의 설명을 따라가며 공부한 기록입니다. 보다 자세히 공부하고자 하는 분은 해당 책을 구매해서 따라가보세요! 쿠버네티스를 본격적으로 공부하기 이전에, 도커의 기본 개념을 훑어보며 쿠버네티스에 보다 더 잘 적응할 수 있도록 해보자. 도커, Docker 도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다. 도커 웹 페이지의 기능을 인용하면 다음과 같다: 도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이는 실행 중인 환경에 관계 없이 언제나..