18. 파티션 용량의 제한으로 인한 docker 폴더 변경
- docker daemon을 일단 중지
#> systemctl stop docker.service
- docker 디렉토리 변경
#> mv /var/lib/docker /data/docker &&
ln -s /data/docker /var/lib/docker
- docker daemon 시작
#> systemctl start docker.service
19. 원래대로라면 정상적으로 구동되어야
하나 제대로 구동되지 않았습니다.
현 시점의 CoreOS 의 stable 버전에는
docker가 1.2.0이 포함되나,
docker.service 에 들어가 있는
btrfs detecting 에 버그가 있어 문제가 발생합니다.
( 정확하게는 patch가 누락된것 같습니다. )
터미널 명령어도 다음과 같이 실행해도 되지만
#> docker -d &
제대로된 가이드를 위해
ubuntu 14.04 LTS 버전을 기준으로 재작성..
하려 했습니다만 GCE는 ubuntu 이미지가 없습니다. ㅜㅜ
debian 계열로 일단 진행하겠습니다.
21. GCE 장단점
- instance의 stop 기능이 없다.
- instance 의 scale up 이 없다. ( 못찾는 것일수도.. )
- 다양한 image를 지원하지 않음. ( 알아서 설치 )
- 개인적으로 이미지가 신뢰도가 떨어진다.
( 서버인데 image 빌드 날짜가 최근일자 )
- asia region을 지원 하지만 aws( Tokyo vs Taiwan?
)에 비해 상대적으로 약간 느리다.
- instance type도 적다.
- Google Cloud Platform 과의 연결성
Google Cloud Storage, BigQuery ..
- 구글의 대용량 시스템의 신뢰도는 세계 최고수준
- 구글이니 어떻게든 해주지 않을까??
23. Check point
- JIRA의 경우 솔루션으로 잦은 업데이트가 있다.
업데이트의 용이성 필요.
- 데이터와 솔루션을 구분하여 관리할 수 있는 상황
DB + 첨부 파일에 대한 별도의 파일 저장소가 필요.
- 향후 서버 이전이 용이해야 한다.
- 안정성이 중요하다.
- 빠르면 더 좋다.
- docker에서 Automated Build 기능이 있으니 써봐야겠다.
- 백업 및 복구가 용이해야 한다.
- 사내 private 시스템이니 보안이 필요하다. SSL 지원 필요.
24. Check point
- JIRA의 경우 솔루션으로 잦은 업데이트가 있다.
업데이트의 용이성 필요.
=> data volume container를 사용하여
솔루션과 data를 분리하면 문제 없을듯
docker에서 tag를 통한 이미지 관리를 통해
버전별 관리도 쉬울듯( OK )
- 데이터와 솔루션을 구분하여 관리할 수 있는 상황
DB + 첨부 파일에 대한 별도의 파일 저장소가 필요.
=> data volume container를 사용하여
솔루션과 data를 분리하면 문제 없을듯 ( OK )
25. Check point
- 향후 서버 이전이 용이해야 한다.
=> docker만 구동 가능하다면 이전은 문제 없음.
docker가 아니더라도 Automated Build를 통한
build script에 대한 history등이 존재하므로
Iaas라도 재설정등에는 별 문제 없다. ( OK )
- 안정성이 중요하다.
=> 버전 1.x 대의 docker니 믿고 써야..
- 빠르면 더 좋다.
=> region이 Korea이면 더 좋지만, Asia 라고 하니 그나마..
docker에서의 속도 벤치 마킹등은 별반 차이 없으니 무난하겠지
26. Check point
- docker에서 Automated Build 써보자.
=> 실제 서비스용으로 이미지를 구축해본적은 거의
없어서 개인 욕심으로 끼워 넣는데 필수는 아닌듯.
- 백업 및 복구가 용이해야 한다.
=> data volume container를 통해 host상에서
백업이 가능 ( OK )
host상의 백업은 자동 백업 되는 시스템인 Disk
- 사내 private 시스템이니 보안이 필요하다.
SSL 지원 필요.
=> apache 에서 proxy 연결로 처리하면 될듯 ( OK
)
29. Dockerfile을 복사
JIRA Dockerfile은 아래 과정이 포함되어 있습니다.
1. ubuntu trusty( 14.04 LTS ) 사용
2. oracle-java7 (JRE) 설치
3. Apache Portable Runtime 설치
4. JIRA 환경설정 변수 설정
5. jira user 생성
6. JIRA 다운로드 및 설치
7. 실행
https://wiki.ubuntu.com/LTS
30. Confluence 도 거의 동일합니다.
Confluence Dockerfile은 아래 과정이 포함되어 있습니다.
1. ubuntu trusty( 14.04 LTS ) 사용
2. oracle-java7 (JRE) 설치
3. Confluence 환경설정
4. confluence user 생성
5. Confluence 다운로드 및 설치
6. 실행
62. confluence 실행
docker run -d
-p 8090:8090
--volumes-from confluence-data
--name confluence
--link jira:jira.test.com
judekim/confluence:5.6.3
* 나머지 설정 작업들은 jira와 거의 동일
64. Apache 구성
apache-atlassian
apache-data-atlassian
/data
/data
- apache의 환경설정
- log
- 실행 스크립트
- 인증서
- 소스
jira confluence
client
https
http:8080
http:8090
65. Apache data volume container 설정
https://bitbucket.org/jude_lezhin/apache-data-atlassian.git
# Dockerfile
FROM busybox
ADD data /data
VOLUME ["/data/"]
CMD ["/bin/sh"]
#> docker build -t judekim/apache-data-atlassian .
#> docker run --name=apache-data-atlassian
judekim/apache-data-atlassian /bin/sh
( data volume container는 말 그대로 컨테이너여야 하기 때문에 실행 )
66. Apache 생성
# Dockerfile
FROM judekim/ubuntu-base:14.04
RUN apt-get update
RUN apt-get -y install apache2-mpm-event openssl cronolog
RUN rm -rf /etc/apache2
RUN ln -s /data/_system/conf/apache2 /etc/apache2
RUN mkdir -p /var/run/apache2
RUN mkdir -p /var/lock/apache2
EXPOSE 80
EXPOSE 443
# using data volume container for configuration
VOLUME ["/data"]
CMD [“/data/bin/run.sh"]
#> docker build -t judekim/apache-atlassian .
67. Apache 실행
docker run -d
-p 0.0.0.0:443:443 -p 0.0.0.0:80:80
--name=apache-atlassian
--volumes-from apache-data-atlassian
--link jira:jira.test.com --link wiki:wiki.test.com
judekim/apache-atlassian
detached 모드로
http 및 https port 개방
unique container 이름 설정 ( apache-atlassian )
apache-data-atlassian 을 마운트해서 사용 ( /data )
hosts 파일에 jira.test.com 및 wiki.test.com 을 설정
judekim/apache-atlassian 를 실행
68. Apache 설정
# Dockerfile
FROM judekim/ubuntu-base:14.04
RUN apt-get update
RUN apt-get -y install apache2-mpm-event openssl cronolog
RUN rm -rf /etc/apache2
RUN ln -s /data/_system/conf/apache2 /etc/apache2
RUN mkdir -p /var/run/apache2
RUN mkdir -p /var/lock/apache2
EXPOSE 80
EXPOSE 443
# using data volume container for configuration
VOLUME ["/data"]
CMD ["/data/bin/run.sh"]
70. docker를 서비스에 활용할때
1. 먼저 서비스 분석
2. docker를 사용하는 것이 적합한지 판단
3. data와 서비스를 분리하는 간단한 설계
4. 업데이트 및 백업, 복원에 대해 설계
5. 모든것은 자동화 및 기록 ( git 활용 )
6. data volume container, link 기능등은 필수
7. 기존에 만들어진 image들의 Dockerfile 참조
8. hub.docker.com 을 적절히 활용
9. 가벼운 것부터 ( 중요도가 낮은 것부터 ) 활용해보자.
( 고객 서비스가 아닌 내부 서비스 위주.. )
일단 찾아보니 hub.docker.com 에서 제일 유명한 녀석을 찾았습니다.
하지만, postgresql 을 사용하더군요.
일단 찾아보니 hub.docker.com 에서 제일 유명한 녀석을 찾았습니다.
하지만, postgresql 을 사용하더군요. ( 옷.. 제껏도 나오는 군요.. -_-;; )
그래서 찾다보니, 맨 아래 이녀석이 맘에 들더군요.
LTS : Long Term support라는 의미로 서버를 사용한다면 해당 버전을 쓰는 것이 훨 씬 좋습니다.
ubuntu-base-oracle-java:7 입니다.
파일 내용은 해당 링크에서 확인 가능합니다.
ubuntu:14.04를 기준으로 향후 해당 버전을 사용할때 필요한 몇가지 사항을 추가 설정하였습니다. (vim 설치등과 같은. )
생성하면 생성하자 마자 바로 빌드가 됩니다.
master 브랜치로 push 하게 되면 자동으로 빌드가 실행됩니다.
물론 옆에 start a build 버튼을 클릭해서 수동으로 빌드 할수 있습니다.
다만, 저 빌드도 개별 container 시스템으로 빌드 되는듯 합니다. 누른 수만큼 실행되고 시간이 꽤 걸리니 유의하세요.
여기서 눈여겨 보아야 할 부분은 volume 이라는 부분입니다.
이제 기본적인 것들은 다 준비되었습니다.
data volume으로 사용하기 위해선 이미지를 한번 실행하여 컨테이너로 만들어 두어야 한다.
container의 실행되어 있지 않아도 된다.
jira-data의 inspect 화면 - Volumes 이 디렉토리를 jira에서 사용하게 될 것이다.
IPAddress 및 Root 패스워드를 설정하고 Authorized Networks 에 자신의 IP 및 docker 서버의 IP를 추가합니다.
이제부터 바로 사용 가능합니다. 초기에는 root 로 접근후 테스트를 위한 DB 설정이 필요합니다.
개별 단계에 생각보다 시간이 많이 소요된다. 이는 jira의 무거움에 따른 상황이다.
docker 서버의 자원 사용 현황을 모니터링 해보면 1 Core에서는 java 기반의 서비스는 약간 무리지 않은가 싶다.
jira agile의 경우 별도의 라이센스 설정이 필요하기 때문에 나오는 메시지이다.
jira는 jira home 에 많은 정보를 저장한다.
DB 접속 정보등..
기존에 jira-data의 inspect 정보에서 확인했던 /home/jira 의 host 경로에서 확인시 아무것도 없음을 확인하였으나,
jira의 설치 이후에는 다음과 같이 파일들이 생성된것을 확인했다. ( jira-data는 현재 running 상태도 아님 )
물론 같은 volume을 다른 형태로 마운트되어 보여주는 것이라 다를 것은 없다. 즉, backup하고 싶으면 container에서 접속해서 처리하지 않고 직접 host에서 해당 위치를 복사해두어도 된다.
이렇게 접근하면 일단 native형태로 접근 하는 것이라 속도도 빠르고 잇점이 많다.
실제로 이슈도 등록해보고, 잘 동작합니다.
이후에 접속한 상태에서 설치할 패키지들을 설치한 후 설정 파일을 수정한다. ( 설정 파일들은 모두 마운트된 /data 파티션에 옮겨둔뒤에 symbolic link로 처리한다.
SSL로 접속시에는 apache 서버를 통해 jira 및 confluence로 포워딩 된다.
이후에 접속한 상태에서 설치할 패키지들을 설치한 후 설정 파일을 수정한다. ( 설정 파일들은 모두 마운트된 /data 파티션에 옮겨둔뒤에 symbolic link로 처리한다.
이후에 접속한 상태에서 설치할 패키지들을 설치한 후 설정 파일을 수정한다. ( 설정 파일들은 모두 마운트된 /data 파티션에 옮겨둔뒤에 symbolic link로 처리한다.