저작권 안내
- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
Docker 모니터링하기
이재홍 http://www.pyrasis.com 2014.08.02 ~ 2014.09.20
애플리케이션 서버 Dockerfile 작성
이제 애플리케이션 서버에서 사용할 Docker 이미지를 만듭니다.
다음 파일들은 저의 GitHub 저장소에 있는 예제 파일을 받아서 사용합니다. 애플리케이션 서버를 구축할 것이므로 애플리케이션 서버로 사용할 각 컴퓨터에 받습니다.
$ git clone https://github.com/pyrasis/dockerbook.git
Dockerfile
FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y nginx \
git make pbuilder python-mock python-configobj \
python-support cdbs
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
RUN chown -R www-data:www-data /var/lib/nginx
WORKDIR /tmp
RUN git clone https://github.com/BrightcoveOS/Diamond.git
RUN cd Diamond && git checkout v3.4 && make deb
RUN dpkg -i Diamond/build/diamond_3.4.0_all.deb
RUN cp /etc/diamond/diamond.conf.example /etc/diamond/diamond.conf
ADD entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 80
EXPOSE 443
- FROM으로 ubuntu:14.04를 기반으로 이미지를 생성하도록 설정합니다.
apt-get update
로 패키지 목록을 최신 상태로 업데이트한 뒤 nginx 패키지와 Diamond에 필요한 패키지를 설치합니다.- nginx를 데몬이 아닌 foreground로 실행하도록 설정합니다. 그리고 /var/lib/nginx 디렉터리의 소유자와 그룹을 www-data로 설정합니다.
- /tmp 디렉터리 아래에
git
을 사용하여 Diamond를 받고, v3.4 태그를 체크아웃합니다. 그리고make deb
명령으로 deb 패키지 파일을 생성합니다.dpkg
로 deb 파일을 설치할 때 파일명에 버전이 있으므로, 소스도 버전을 맞추어주는 것입니다. dpkg
로 빌드된 deb 파일을 설치합니다.- Diamond 예제 설정 파일을 기본 설정 파일(diamond.conf)로 복사합니다.
- 이미지에 entrypoint.sh 파일을 추가합니다.
- 이미지의 /entrypoint.sh 파일에 실행 권한을 줍니다.
- ENTRYPOINT로 컨테이너가 생성될 때 entrypoint.sh가 실행되도록 설정합니다.
- EXPOSE로 80, 443번 포트를 호스트와 연결합니다.
다음은 컨테이너가 시작될 때 실행될 entrypoint.sh 파일입니다.
entrypoint.sh
#!/bin/bash
sed -i "s/host = graphite/host = $GRAPHITE_HOST/g" /etc/diamond/diamond.conf
diamond
cd /etc/nginx
nginx
- /etc/diamond/diamond.conf 파일의
host
에$GRAPHITE_HOST
변수 값을 설정합니다. 이 변수는docker run
명령에서-e
옵션으로 설정할 수 있습니다. diamond
를 실행합니다. 실행하는 즉시 데몬으로 동작됩니다.- 저는 예제로 nginx를 실행했습니다. 이 부분은 나중에 여러분이 작성한 애플리케이션을 실행하면 됩니다.
Dockerfile이 있는 디렉터리로 이동한 뒤 docker build
명령으로 이미지를 생성합니다.
~$ cd dockerbook/Chapter09/Diamond
~/dockerbook/Chapter09/Diamond$ sudo docker build --tag diamond .
모니터링 서버와 마찬가지로 애플리케이션 서버도 시간을 정확히 맞추어줍니다.
$ sudo ntpdate time2.kriss.re.kr
diamond 이미지를 컨테이너로 생성합니다. -d
옵션을 사용하여 데몬 모드로 실행하고, 80번 포트를 연결한 뒤 외부에 노출합니다. -e
옵션으로 GRAPHITE_HOST
변수에 모니터링 서버의 IP 주소 또는 도메인을 설정합니다. 192.168.0.40은 저의 모니터링 서버 IP 주소이므로 여러분의 IP 주소 또는 도메인으로 설정합니다.
$ sudo docker run -d --name app1 -p 80:80 -e GRAPHITE_HOST=192.168.0.40 diamond
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.