
서비스(Service): 포드에 연결하고 외부에 노출 디플로이먼트를 통해 생성된 포드에 어떻게 접근할 수 있을까요? 이전 까지는 kubectl describe 명령어로 포드의 내부 IP를 직접 확인한 뒤 포드로 직접 접근할 수는 있었지만, 이 방법은 로컬 개발 환경 또는 쿠버 클러스터 내부에서만 사용할 수 있었습니다. 게다가 도커 컨테이너와 마찬가지로 포드의 IP는 영속적이지 않아 항상 변할 수 있다는 점도 유의해야 합니다. 여러 개의 디플로이먼트를 하나의 완벽한 애플리케이션으로 연동하려면 포드 IP가 아닌, 서로를 발견할 수 있는 다른 방법이 필요합니다. 도커 사용 방법을 되살펴 보면 도커 컨테이너는 -p 옵션으로 손쉽게 컨테이너를 외부로 노출할 수 있었습니다. 즉, 컨테이너가 생성됨과 동시에 외부로 ..

오늘은 작년부터 조금씩 만들어온 사이드 프로젝트가 있는데 한번 소개 해보려고 합니다. 작년 12월부터 띄엄 띄엄.. 만들기 시작했고, 지금은 프로젝트를 업그레이드하여 버전 2.0을 만들고 있는 중입니다. 프로젝트 소개 제가 만든 프로젝트는 카카오 코로나 알리미라는 프로젝트입니다. 카카오 코로나 알리미는 카카오톡을 통해서 코로나 관련 정보를 볼 수 있는 서비스 입니다. 코로나 라이브라는 아주 좋은 서비스가 있지만, 사람들이 카카오톡을 자주 이용하기 때문에 카카오톡 안에 코로나와 관련된 정보를 알려줄 수 있는 서비스를 만들면 좋을 것 같아서 시작하게 됐습니다. 프로젝트 기능 제가 만든 챗봇에는 크게 3가지의 기능이 있습니다. 0시 기준 총 확진자 및 관련 정보들 질병관리청에서 매일 오전에 전날의 확진자 및 ..

도커 컴포즈 도커 컴포즈를 사용하는 이유 여러 개의 컨테이너가 하나의 애플리케이션으로 동작할 때 이를 테스트하려면 각 컨테이너를 하나씩 생성해야 한다. 매번 run 명령어에 옵션을 설정해 CLI로 컨테이너를 생성하기보다는 여러 개의 컨테이너를 하나의 서비스로 정의해 컨테이너 묶음으로 관리할 수 있다면 좀더 편리하다. 이를 위해 도커 컴포즈는 컨테이너를 이용한 서비스의 개발과 CI를 위해 여러 개의 컨테이너를 하나의 프로젝트로서 다룰 수 있는 작업 환경을 제공한다. 도커 컴포즈 설치 # ubuntu, 루트에서 해야함, 최신버전찾기 : https://github.com/docker/compose $ curl -L https://github.com/docker/compose/releases/download/(..

도커 이미지 도커는 기본적으로 도커 허브라는 중앙 이미지 저장소에서 이미지를 내려받는다. 이미지 저장소를 다른 사람들에게 공개하지 않기 위해 비공개 저장소를 사용하려면 비공개 저장소의 수에 따라 요금을 지불해야 한다. 이를 해결하기 위해 도커 이미지 저장소를 직접 구축해 비공개로 사용할 수도 있다. 도커 엔진에서 docker search 명령어를 사용하여 어떤 이미지가 있는지 확인할 수 있다. $ docker search ubuntu 도커 이미지 생성 컨테이너에 애플리케이션을 위한 특정 개발 환경을 직접 구축한 뒤 사용자만의 이미지를 직접 생성해야 하는 경우가 많다. 컨테이너 안에서 작업한 내용을 이미지로 만드는 방법을 알아보자. $ docker run -it --name commit_test ubunt..

도커 네트워크 도커 네트워크 구조 도커는 컨테이너에 내부 IP를 순차적으로 할당하며, 이 IP는 컨테이너를 재시작할 때마다 변경될 수 있다. 이 내부 IP는 도커가 설치된 호스트, 즉 내부 망에서만 쓸 수 있는 IP이므로 외부와 연결될 필요가 있다. 이 과정은 컨테이너를 시작할 때마다 호스트에 veth(virtual ethernet)…라는 네트워크 인터페이스를 생성함으로써 이뤄진다. 도커가 설치된 호스트에서 ifconfig 같은 명령어로 인터페이스를 확인하면 실행 중인 컨테이너 수만큼 veth로 시작하는 인터페이스가 생성된 것을 알 수 있다. veth 인터페이스뿐 아니라 docker0이라는 브리지도 존재하는데 docker0 브리지는 각 veth 인터페이스와 바인딩돼 호스트의 eth0 인터페이스와 이어주는..

도커 컨테이너 다루기 컨테이너를 외부에 노출 컨테이너는 가상 머신과 마찬가지로 가상 IP 주소를 할당 받는다. 기본적으로 도커는 컨테이너에 172.17.0.x의 IP를 순차적으로 할당한다. 아무런 설정을 하지 않았다면 이 컨테이너는 외부에서 접근할 수 없으며 도커가 설치된 호스트에서만 접근할 수 있다. 외부에 컨테이너의 애플리케이션을 노출하기 위해서는 eth0의 IP와 포트를 호스트의 IP와 포트에 바인딩해야 한다. 컨테이너에 아파치 웹서버를 설치하고 외부에 노출해보자. $ docker run -i -t --name mywebserver -p 80:80 ubuntu:14.04 -p 옵션은 컨테이너의 포트를 호스트의 포트와 바인딩해 연결할 수 있게 설정한다. 호스트포트:컨테이너포트 형식으로 쓰면된다. $ ..

도커 엔진 도커 이미지와 컨테이너 도커 엔진에서 사용하는 기본 단위는 이미지와 컨테이너임. 도커 이미지 이미지는 컨테이너를 생성할 때 필요한 요소이며, 가상 머신을 생성할 때 사용하는 iso 파일과 비슷한 개념이다. 이미지는 여러 개의 계층으로 된 바이너리 파일로 존재하고, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용된다. 도커 명령어로 내려받을 수 있다. 도커 컨테이너 이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는 파일시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성되고, 이것이 바로 도커 컨테이너가 된다. 생성된 각 컨테이너는 각기 독립된 파일시스템을 제공받으며 호스트와 분리돼 있으므로 특정 컨테이너에서 어떤 애플리케이션을 설치하거나 삭제해..

도커란? 일반적으로 도커라고 하면 도커 엔진이라는 의미이다. 도커 엔진이 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 주 프로젝트 이기 때문. 가상 머신과 도커 컨테이너 가상 머신은 완벽한 운영체제를 생성할 수 있다는 장점이 있지만 일반 호스트에 비해 성능 손실이 있으며, 수 기가바이트에 달하는 가상 머신 이미지를 애플리케이션으로 배포하기는 부담스럽다는 단점이 있음. 이에 비해 도커 컨테이너는 가상화된 공간을 생성하기 위해 리눅스의 자체 기능인 chroot, 네임스페이스, cgroup을 사용함으로써 프로세스 단위의 격리 환경을 만들기 때문에 성능 손실이 거의 없음. 도커를 시작해야 하는 이유 애플리케이션의 개발과 배포가 편함. 도커 이미지는 ..