coreos에서 docker-compose 설치하기

오랜만에 coreos를 사용하려니 별게 다 안되네요. docker-compose 설치하다 막혔던걸 간단히 정리합니다.

docker-compose 설치하는 방법은 다음 링크에 나온대로 하면 됩니다.

https://docs.docker.com/compose/install/

그런데 coreos 에서는 안되는데 이유는 다운로드 위치 때문입니다.

coreos 오랜만에 쓰니 좋네요. ㅎ

3번째 도커 워크샵 진행합니다.

스타트업 대표라는 모자를 주로 쓰고 다니지만 가끔은 DevOps 엔지니어 모자를 씁니다.

3번째 Docker Workshop을 진행합니다. 지난  2회에 걸쳐 워크샵을 진행하면서 시간이나 심화내용에 대한 보충이 필요하다는것을 느꼈습니다.

  • 3일, 18시간 진행합니다.
  • 기본:활용 비율이 1:2 로 바뀌면서 활용 부분을 보강했습니다.

Docker기반의 DevOps 인프라 구축 WORKSHOP 3기

패캠 강의는 수강생분들이 열심이라 저에게도 많은 자극이 됩니다. 참여하는 분들이 강의가 끝나고 돌아가실때 듣길 잘했다고 느낄수 있도록 열심히 준비해서 뵙겠습니다.

No DOCKER 체인 에러

오랜만에 물리장비에 docker 엔진을 설치하고 컨테이너를 실행하는 작업을 했습니다. 그런데 분명히 잘 실행되던 컨테이너가 갑자기 iptable 에 DOCKER 체인이 없다는 에러가 뜨면서 실행되지 않았습니다.

구글링을 해보니 아래와 같은 이슈 리포팅이 있더군요.

https://github.com/docker/docker/issues/1871

아래 블로그 내용을 참고해서 시도해 봤습니다.

http://se2n.com/study

해결이 안되다가 결국 docker 엔진을 재 시작하니 문제없이 동작하네요. 해결하고 나서야 제가 iptable을 재시작한 이후에 이런 이슈가 생겼다는게 떠 올랐습니다.

결론 iptable을 재시작하면 docker 엔진도 재 시작해야 한다.

패스트캠퍼스에서 도커 강의 합니다.

패스트 캠퍼스에서 도커 강의 진행합니다.

2주에 걸쳐 매주 토요일 2회로 진행하니 도커를 이용해 인프라 환경을 구축하고 싶은 분이라면 참여하세요.  도커 초보이신분도 따라올 수 있도록 약간 쉽게 꾸몄습니다. 도커를 어느정도 써보신 분이라면 1일차는 쉽다고 느끼실거 같고, 2일차는 흥미롭게 들으실수 있습니다.

2일에 60만원이면 국내 교육으로 치면 비싸다고 생각할수도 있지만 비슷한 교육을 외국에 나가서 받는것과 비교하면 저렴한 편입니다. (제가 스페인에서 1일 도커 교육받은게 100만원이 넘었던것과 비교하면 ^^;)

상세한 내용은 아래 링크를 참고하세요.

[상세페이지] Docker 기반의 DevOps 인프라 구축 WORKSHOP 1기

 

도커 이미지 빌드

도커로 웹앱을 빌드하는 작업은 적당한 환경이 제공되지 않으면 불편하다.
이때 가장 중요한건 도커 레지스트리 – 이미지저장소 이다.
편한 도커이미지 빌드환경을 구성하려고

첫번째 ec2로 젠킨스와 레지스트리를 설치했다.
레지스트리는 https를 지원해야 해서 인증서를 설치하고 젠킨스가 레지스트리에 푸시할때 시간이 덜 걸리라고
같은 vm에 함께 구성했다. 그런데 이렇게 해놓고 1-2주 정도 지나니 용량 문제가 발생했다.
ebs 용량 30기가가 금방 차버렸다.

두번째 도커허브 자동빌드를 설정했다.
bitbucket에 전용 레파지터리를 만들어 두고 푸시되면 자동빌드가 되도록 설정했다.
용량걱정이나 관리부담은 덜었지만 빌드가 즉시 실행되지 않고 패러럴 빌드가 실행되는게 불편했다.
그리고 생각보다 빌드속도가 느렸다.
게다가 앱을 패키징해서 git에 푸시했는데 최신본이 잘 반영되지 않는 이슈도 있었다.

세번째 로컬빌드후 도커허브에 푸시한다.
빌드를 로컬에서 실행하도록 했다. 로컬에서 패키징과 빌드가 되는게 좀 찜찜했지만 그래도 속도는 빨랐다.
도커허브에 태그로 푸시해놓을수 있으니 배포도 편해졌다.

결론.
로컬 빌드, DockerHub 레파지터리 사용.
전용서버가 한대 있다면 젠킨스로 빌드해서 DockerHub에 푸시해놓고 다른 서버에서 풀링해서 쓰도록 하는게 좋다.

Docker가 Unikernel System 인수

도커사가 Unikernel System을 인수했다고 1.26일 발표했습니다. 작년 DockerConEU 2016에서 유니커널기반의 도커 이미지 데모를 봤던 기억이 납니다. NginX가 2.2M, Mysql이 4.5M 밖에 되지 않더군요. 이정도면 임베디드 장비에 올려도 문제없을만한 수준 아닌가요.

유니커널이 뭐길래 이렇게 작은 이미지를 만들수 있는 걸까요 그림 출처

specialisation

리눅스 컨테이너를 가상서버에서 실행한다고 했을때 왼쪽의 그림처럼 컨테이너가 리눅스 커널을 공유하기 때문에 이미지 크기가 줄어들게 됩니다. 하지만 유니커널은 커널을 공유하는게 아니라 컨테이너에서 실행되는 어플리케이션이 필요로 하는 내용만 남기고 나머지를 모두 제거해 버리는 방식입니다. 그러다 보니 용량이 엄청나게 줄어드는 효과가 있습니다. 반면에 컨테이너에 다른 어플리케이션을 실행하는건 불가능해집니다.

유니커널이 내세우는 장점은 아래와 같습니다.

  • 보안이 증가한다.
  • 최적화가 잘된다.
  • 부팅속도가 빠르다
  • 이미지가 작아진다.

유니커널을 일반적으로 사용하기는 어려워 보입니다만 특별한 목적에 맞는 이미지를 만든다면 유용할거 같네요.

Docker호스트에 컨테이너를 몇개나 만들수 있을까

CoreOS  호스트에 컨테이너를 몇개나 만들수 있는지 실험해봤다.

Docker CLI  명령을 스크립트로 실행하면서 nginx 컨테이너를 기본 설정으로 만들어 보니 대량 170개 정도가 만들어졌을때 속도가 급격히 저하되었다. 이 시점에 CPU  사용률은 20~30% 정도 수준이었으나 메모리는 컨테이너 1개가 10메가 정도를 차지하고 있었다.

이후 동일한 머신에서 특정 유형의 컨테이너가 아닌 다양한 종류 컨테이너를 만들어서 사용하게 되었다. 이때는 60~70개 정도 컨테이너가 만들어지니 성능이 저하되는게 눈에 보였다. 이때 실행되어 있는 컨테이너 비율은 약 70% 정도.

그냥 경험치로 적어봤다.