Container
-
mesos marathon-lbContainer 2018. 1. 25. 09:00
- mesos 클러스터에 떠 있는 컨테이너들에 외부에서 접속가능하게 해줌. - service discovery : 특정 앱의 컨테이너들에 변경사항(배포/failover)이 발생했을때 인지해서 현재 떠 있는 컨테이너쪽으로 트래픽을 보냄. - marathon-lb는 marathon master에서 발생하는 이벤트를 구독하고 있다가, 변경사항이 감지되면 haproxy에 관련 내용을 업데이트 한다. 유저는 haproxy를 통해서 실제 컨테이너에 접근 가능하다. - marathon-lb는 server sent event(sse) 방식을 통해서 이벤트를 구독하고 있다.- haproxy 업데이트는 config reload를 통해서 일어난다. 그래서 트래픽 유실이 거의 없다. 앱 배포시 잘못된 설정이 들어가서 hapr..
-
Google Container EngineContainer 2016. 4. 18. 09:00
구글에서는 구글 컴퓨트 엔진에서 컨테이너를 이용한 서비스 운영을 할 수 있도록 해주는 구글 컨테이너 엔진(Google Container Engine, GCE)이라는 서비스를 하고 있다. 구글 컨테이너 엔진은 구글의 컨테이너 관리 시스템인 보그(Borg)를 오픈소스화한 쿠버네티스(Kubernetes)를 이용한다. Borg의 구성과 장단점은 Large-scale cluster management at Google with Borg라는 논문으로 2015년 초에 발표되었다. 구글은 이미 컨테이너 시스템을 10년 넘게 서비스에 이용해 왔고 이런 노하우를 이용해서 GCE 서비스를 하고 있다. 쿠버네티스 자체를 사용자가 운영할 필요없이 구글이 직접 운영해주기 때문에 운영부담없이 서비스를 사용하기만 하면 된다. 여기서..
-
Docker 컨테이너 모니터링Container 2016. 4. 15. 09:00
cAdvisor 일반적인 서버 운영 환경에서는 서비스 운영을 하면서 필요한 시스템 메트릭(CPU/메모리 사용률, 네트워크 트래픽, …등)을 모니터링하면서 특이사항이 있을때 대응해 나간다. 도커 컨테이너를 이용해서 서비스를 진행할때도 이는 필요한 기능이다. 허나 컨테이너라는 환경하에서는 기존 모니터링 도구로는 컨테이너에 대한 모니터링을 진행하는 것이 쉽지 않다. 이런 문제점을 해결하고 컨테이너를 모니터링하기 위한 도구로 많이 사용되는 것이 구글에서 만든 cAdvisor(Container Advisor)다. cAdvisor는 호스트에서 실행중인 컨테이너들의 자원 사용량과 성능에 관한 정보를 수집해서 보여준다. cAdvisor는 자신이 컨테이너를 모니터링 하는 도구이면서 컨테이너를 이용해서 실행할 수 있다. ..
-
Docker 공식 이미지 사용하기 : ElasticSearchContainer 2016. 4. 13. 09:00
오픈 소스 검색엔진인 엘라스틱서치(elasticsearch) 역시 공식 docker 이미지를 가지고 있다. 아래 명령으로 간단하게 엘라스틱서치를 실행할 수 있다. docker run --rm -ti -p 9200:9200 elasticsearch:1.7 엘라스틱서치는 REST API를 통해서 명령을 실행한다. 간단한 curl 명령을 통해서 엘라스틱서치가 실행됐는지 아래처럼 확인할 수 있다. curl 192.168.123.103:9200 { "status" : 200, "name" : "Scott Summers", "cluster_name" : "elasticsearch", "version" : { "number" : "1.7.3", "build_hash" : "05d4530971ef0ea46d0f4fa6..
-
Docker 공식 이미지 사용하기 : 젠킨스Container 2016. 4. 11. 09:00
docker를 활용하는 방안중 일반적으로 많이 소개되는 방법중 하나인 젠킨스 사용방법을 알아보자. 우선 젠킨스 공식 이미지를 이용해서 젠킨스 컨테이너를 실행해 보자. docker run -p 8080:8080 -p 50000:50000 jenkins 실행한 다음 8080 포트로 접속해 보면 젠킨스가 실행된걸 확인할 수 있다. 이상태에서 새 작업을 설정해서 젠킨스를 사용해도 된다. 그러나 이렇게 사용할 경우 젠킨스에서 사용하던 데이터가 컨테이너 내부에 저장되기 때문에 컨테이너가 중지되면 데이터가 모두 사라지게 된다. 젠킨스는 모든 데이터를 로컬디스크의 파일로 기록해서 사용하기 때문이다. 이제 젠킨스를 재시작하더라도 데이터가 남아있게 볼륨을 지정해 서 컨테이너를 시작해 보자. Jenkins라는 이름으로 디렉..
-
Docker 공식 이미지 사용하기 : RedisContainer 2016. 4. 8. 09:00
Docker를 이용한 애플리케이션중 가장 유용하게 사용할 수 있는 것이 redis다. Redis는 오픈소스 인메모리(in-memory) 데이터 저장소다. 일반적으로 데이터베이스의 캐시로 사용하거나 메세지 브로커로 사용한다. 이 중 캐시로서의 용도에는 데이터의 영속성을 고려하지 않아도 되니Docker가 딱 알맞다. redis를 실행해 보자. Redis 기본 포트인 6379를 호스트 포트에 바인딩해서 실행한다. docker run --rm -ti -p 6379:6379 redis redis가 실행된걸 확인할 수 있다. redis-cli –h [docker 호스트ip] 를 입력하면 redis 서버에 접속되는걸 알 수 있다. Docker 이미지를 실행할때 아래처럼 –v 옵션을 이용하면 redis.conf 환경설..
-
Docker 볼륨 사용하기Container 2016. 4. 6. 09:00
Docker를 이용해서 실행한 컨테이너에 저장한 데이터는 컨테이너가 중지되면 보존되지 않는다. 이런 컨테이너의 특성 때문에 각종 예제에서 docker를 이야기할때 자주 나오는 예제중에 데이터의 저장이 필요하지 않고 캐시로 사용할 수 있는 redis가 자주 언급되는 이유다. Docker를 이용해서 작업을 할때는 기본적으로 영구저장이 필요한 데이터들은 컨테이너 내부가 아니라 외부 데이터 저장소를 이용해서 저장해야 한다. 하지만 작업을 하다보면 컨테이너 내부에 저장을 하고 컨테이너가 중지되더라도 사용중이던 데이터를 보존해야할 필요가 있기 마련이다. 그 뿐만 아니라 작업했던 데이터를 컨테이너로 매번 복사해 넣지 않고 직접 수정하면서 컨테이너 내부에서 사용하고 싶을 수도 있다. 이런 경우를 위해서 Docker 볼..
-
Docker onbuild 이미지 이용하기 : JavaContainer 2016. 4. 4. 09:00
java spring 자바에서 가장 많이 사용하는 스프링 역시 docker 를 이용해서 실행할 수 있다. 스프링 기본예제로 많이 사용되는 petclinic을 docker를 이용해서 실행해 보자. 우선 petclinic 소스를 다운받는다. git clone https://github.com/spring-projects/spring-petclinic.git 여기서는 Maven용 docker onbuild 이미지를 이용한다. spring-petclinic/ 디렉토리안에 다음 Dockerfile을 추가하기만 하면 된다. FROM maven:3.3-jdk-7-onbuild CMD ["mvn", "tomcat7:run"] 이제 docker 이미지를 만들어서 실행해 보자. docker build --tag sprin..