SlideShare uma empresa Scribd logo
1 de 71
docker on GCE 
( Google Compute Engine) 
GDG Korea Cloud 
2014-10-28 by judeKim
Speaker 
- 레진엔터테인먼트 서버개발 
자 
- GDG Korea Cloud 운영자 
- Facebook Korea Docker 
User Group 운영자
오늘 뭘 하지?
docker위에 JIRA 와 
Confluence를 올려보 
자!!
그런데 docker는 어디 
서 띄울건데?
레진은 이미 Google 
AppEngine을 사용중!!
Google 의 GCE를 
( Google Compute Engine ) 
사용해볼까? 
Asia Region 도 생겼다는데..
GCE ( Google Compute 
Engine ) 
= 
Amazon AWS 
= 
KT ucloud
GCE에 서버 만들기
파티션 용량의 제한으로 인한 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
원래대로라면 정상적으로 구동되어야 
하나 제대로 구동되지 않았습니다. 
현 시점의 CoreOS 의 stable 버전에는 
docker가 1.2.0이 포함되나, 
docker.service 에 들어가 있는 
btrfs detecting 에 버그가 있어 문제가 발생합니다. 
( 정확하게는 patch가 누락된것 같습니다. ) 
터미널 명령어도 다음과 같이 실행해도 되지만 
#> docker -d & 
제대로된 가이드를 위해 
ubuntu 14.04 LTS 버전을 기준으로 재작성.. 
하려 했습니다만 GCE는 ubuntu 이미지가 없습니다. ㅜㅜ 
debian 계열로 일단 진행하겠습니다.
간단히 설치를 진행해줍니다. 
https://docs.docker.com/installation/debian/#debian-wheezy-7-64-bit 
# /data 파티션을 100GB 할당한 SSD로 설정해줍니다. 
#> mkdir /data 
#> mkfs.ext4 /dev/sdb 
#> mount /dev/sdb /data 
#> service docker stop 
#> mv /var/lib/docker /data/. && 
ln -s /data/docker /var/lib/docker 
#> service docker start 
# /data 파티션의 부팅시 마운트를 위해 /etc/fstab에 추가해줍니다 
/dev/sdb /data ext4 defaults 1 1
GCE 장단점 
- instance의 stop 기능이 없다. 
- instance 의 scale up 이 없다. ( 못찾는 것일수도.. ) 
- 다양한 image를 지원하지 않음. ( 알아서 설치 ) 
- 개인적으로 이미지가 신뢰도가 떨어진다. 
( 서버인데 image 빌드 날짜가 최근일자 ) 
- asia region을 지원 하지만 aws( Tokyo vs Taiwan? 
)에 비해 상대적으로 약간 느리다. 
- instance type도 적다. 
- Google Cloud Platform 과의 연결성 
Google Cloud Storage, BigQuery .. 
- 구글의 대용량 시스템의 신뢰도는 세계 최고수준 
- 구글이니 어떻게든 해주지 않을까??
Check Point!!
Check point 
- JIRA의 경우 솔루션으로 잦은 업데이트가 있다. 
업데이트의 용이성 필요. 
- 데이터와 솔루션을 구분하여 관리할 수 있는 상황 
DB + 첨부 파일에 대한 별도의 파일 저장소가 필요. 
- 향후 서버 이전이 용이해야 한다. 
- 안정성이 중요하다. 
- 빠르면 더 좋다. 
- docker에서 Automated Build 기능이 있으니 써봐야겠다. 
- 백업 및 복구가 용이해야 한다. 
- 사내 private 시스템이니 보안이 필요하다. SSL 지원 필요.
Check point 
- JIRA의 경우 솔루션으로 잦은 업데이트가 있다. 
업데이트의 용이성 필요. 
=> data volume container를 사용하여 
솔루션과 data를 분리하면 문제 없을듯 
docker에서 tag를 통한 이미지 관리를 통해 
버전별 관리도 쉬울듯( OK ) 
- 데이터와 솔루션을 구분하여 관리할 수 있는 상황 
DB + 첨부 파일에 대한 별도의 파일 저장소가 필요. 
=> data volume container를 사용하여 
솔루션과 data를 분리하면 문제 없을듯 ( OK )
Check point 
- 향후 서버 이전이 용이해야 한다. 
=> docker만 구동 가능하다면 이전은 문제 없음. 
docker가 아니더라도 Automated Build를 통한 
build script에 대한 history등이 존재하므로 
Iaas라도 재설정등에는 별 문제 없다. ( OK ) 
- 안정성이 중요하다. 
=> 버전 1.x 대의 docker니 믿고 써야.. 
- 빠르면 더 좋다. 
=> region이 Korea이면 더 좋지만, Asia 라고 하니 그나마.. 
docker에서의 속도 벤치 마킹등은 별반 차이 없으니 무난하겠지
Check point 
- docker에서 Automated Build 써보자. 
=> 실제 서비스용으로 이미지를 구축해본적은 거의 
없어서 개인 욕심으로 끼워 넣는데 필수는 아닌듯. 
- 백업 및 복구가 용이해야 한다. 
=> data volume container를 통해 host상에서 
백업이 가능 ( OK ) 
host상의 백업은 자동 백업 되는 시스템인 Disk 
- 사내 private 시스템이니 보안이 필요하다. 
SSL 지원 필요. 
=> apache 에서 proxy 연결로 처리하면 될듯 ( OK 
)
항상 그렇듯이 제일 빠른 방 
법은 
가져다 쓰기입니다.
hub.docker.com 에서 찾습니다.
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
Confluence 도 거의 동일합니다. 
Confluence Dockerfile은 아래 과정이 포함되어 있습니다. 
1. ubuntu trusty( 14.04 LTS ) 사용 
2. oracle-java7 (JRE) 설치 
3. Confluence 환경설정 
4. confluence user 생성 
5. Confluence 다운로드 및 설치 
6. 실행
이미지 만들기 
Automated build
이미지 구성 형태 
jira:6.3.6a 
confluence:5.6.3 
oracle-java:7 
ubuntu:14.04
git repository 생성 
root 디렉토리에 Dockerfile 하나만 생성해주면 끝! 
https://registry.hub.docker.com/u/judekim/ubuntu-base/dockerfile/
Source repository 연결
앞서 설명한 과정들을 거쳐 
repository를 아래와 같이 만듭니다. 
ubuntu-base 
ubuntu-base-oracle- 
java 
jira 
confluence
Data volume container 
ubuntu-base 
ubuntu-base-oracle- 
java 
jira 
confluence 
jira-data 
confluence-data 
https://docs.docker.com/userguide/dockervolumes/
jira-data Dockerfile
Data volume container build 
# jira_data> docker build -t judekim/jira_data . 
# confluence_data> docker build -t judekim/confluence_data . 
root@docker-01:~/docker# docker images 
REPOSITORY TAG IMAGE ID judekim/jira_data latest aa273ba54cd3 judekim/confluence_data latest ddf41e745583 judekim/confluence 5.6.3 0dae10b133d6 judekim/jira 6.3.6 0947b9f2398a judekim/ubuntu-base-oracle-java 7 2f7064e3b9e2 judekim/ubuntu-base 14.04 af0b7b077712
nsenter - replace for ssh 
https://github.com/jpetazzo/nsenter 
= docker exec
nsenter - replace for ssh 
* 설치 
docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter 
* alias 추가 ( .bashrc ) 
alias ns='nsenter --mount --uts --ipc --net --pid —target' 
* ns { PID }
data volume container 실행 
#> docker run --name jira-data judekim/jira_data 
#> docker run --name confluence-data judekim/confluence_data 
#> docker inspect jira-data
jira 실행 
#> docker run -d 
-p 8080:8080 
--volumes-from jira-data 
--name jira judekim/jira:6.3.6 
* jira container 접속 
#> ns 2587
환경설정 
# docker-01 서버 8080 접속을 위한 방화벽 오픈
접속 테스트
여기서 잠깐 
저는 설치시 DB는 기존에 사용하던 AWS의 RDS를 사용. 
현재의 경우는 Mysql 을 별도로 설치해야 합니다. 
일단 테스트를 위해 구글이 지원하는 Cloud SQL을 사용하겠습니다 
사용법은 Mysql 과 동일합니다. ( 드라이버도 동일 )
google - cloud sql 설정
jira 설정
jira 설정
jira 설정
jira 설정
jira 설정
jira 설정
Data volume container는? 
( host 에서 접근하여 확인 )
Nsenter로 접근하여 확인( jira container )
jira 설치 완료
confluence 실행 
docker run -d 
-p 8090:8090 
--volumes-from confluence-data 
--name confluence 
--link jira:jira.test.com 
judekim/confluence:5.6.3 
* 나머지 설정 작업들은 jira와 거의 동일
confluence 설치 완료
Apache 구성 
apache-atlassian 
apache-data-atlassian 
/data 
/data 
- apache의 환경설정 
- log 
- 실행 스크립트 
- 인증서 
- 소스 
jira confluence 
client 
https 
http:8080 
http:8090
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는 말 그대로 컨테이너여야 하기 때문에 실행 )
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 .
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 를 실행
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"]
Apache 환경설정 
<VirtualHost *:80> 
ServerName jira.test.com 
RedirectMatch (.*)$ https://jira.test.com$1 
</VirtualHost> 
<IfModule mod_ssl.c> 
<VirtualHost *:443> 
ServerName jira.test.com 
# JIRA Proxy Configuration: 
<Proxy *> 
Order deny,allow 
Allow from all 
</Proxy> 
ProxyRequests Off 
ProxyPreserveHost On 
ProxyPass / http://jira.test.com:8080/ 
ProxyPassReverse / http://jira.test.com:8080/ 
</VirtualHost> 
</IfModule> 
http -> https … http(8080) 
apache -> apache … jira
docker를 서비스에 활용할때 
1. 먼저 서비스 분석 
2. docker를 사용하는 것이 적합한지 판단 
3. data와 서비스를 분리하는 간단한 설계 
4. 업데이트 및 백업, 복원에 대해 설계 
5. 모든것은 자동화 및 기록 ( git 활용 ) 
6. data volume container, link 기능등은 필수 
7. 기존에 만들어진 image들의 Dockerfile 참조 
8. hub.docker.com 을 적절히 활용 
9. 가벼운 것부터 ( 중요도가 낮은 것부터 ) 활용해보자. 
( 고객 서비스가 아닌 내부 서비스 위주.. )
Thank you.

Mais conteúdo relacionado

Mais procurados

도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)Ji-Woong Choi
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래NAVER D2
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestrationNAVER D2
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
Docker기반 분산 플랫폼
Docker기반 분산 플랫폼Docker기반 분산 플랫폼
Docker기반 분산 플랫폼SeongHyun Jeong
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]David Lee
 
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container DayAmazon Web Services Korea
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Steve Shim
 
Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2XpressEngine
 
Docker 사내교육 자료
Docker 사내교육 자료Docker 사내교육 자료
Docker 사내교육 자료Juneyoung Oh
 
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문Daniel Seo
 
Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기Dronix
 
Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Keon Ahn
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트Ji-Woong Choi
 
CoreOS를 이용한 Docker 관리툴 소개
CoreOS를 이용한 Docker 관리툴 소개CoreOS를 이용한 Docker 관리툴 소개
CoreOS를 이용한 Docker 관리툴 소개충섭 김
 
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례NAVER LABS
 
Docker.소개.30 m
Docker.소개.30 mDocker.소개.30 m
Docker.소개.30 mWonchang Song
 

Mais procurados (20)

도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestration
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
Docker기반 분산 플랫폼
Docker기반 분산 플랫폼Docker기반 분산 플랫폼
Docker기반 분산 플랫폼
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
 
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1
 
Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2
 
Docker 사내교육 자료
Docker 사내교육 자료Docker 사내교육 자료
Docker 사내교육 자료
 
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문
 
Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기
 
Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리
 
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 
CoreOS를 이용한 Docker 관리툴 소개
CoreOS를 이용한 Docker 관리툴 소개CoreOS를 이용한 Docker 관리툴 소개
CoreOS를 이용한 Docker 관리툴 소개
 
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
 
Docker.소개.30 m
Docker.소개.30 mDocker.소개.30 m
Docker.소개.30 m
 

Destaque

Docker at Deview 2013
Docker at Deview 2013Docker at Deview 2013
Docker at Deview 2013Jude Kim
 
About docker in GDG Seoul
About docker in GDG SeoulAbout docker in GDG Seoul
About docker in GDG SeoulJude Kim
 
Big query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupBig query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupJude Kim
 
Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewTaewan Kim
 
Docker at Deview 2013
Docker at Deview 2013Docker at Deview 2013
Docker at Deview 2013Jude Kim
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_startSukjin Yun
 
Docker registry swift
Docker registry swiftDocker registry swift
Docker registry swiftJunho Kim
 
boot2docker 사용시 컨테이너에서 생성한 데이터를 유지하기
boot2docker 사용시 컨테이너에서 생성한 데이터를 유지하기boot2docker 사용시 컨테이너에서 생성한 데이터를 유지하기
boot2docker 사용시 컨테이너에서 생성한 데이터를 유지하기창훈 정
 
Docker registry swift_junojunho
Docker registry swift_junojunhoDocker registry swift_junojunho
Docker registry swift_junojunhoJunho Kim
 
Docker Casual Talk #2 - Dockerizing newrelic-sysmond
Docker Casual Talk #2 - Dockerizing newrelic-sysmondDocker Casual Talk #2 - Dockerizing newrelic-sysmond
Docker Casual Talk #2 - Dockerizing newrelic-sysmondDaegwon Kim
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08Nomad Connection, Inc.
 
포스테키안 서평공모전 당선작(2016-1)
포스테키안 서평공모전 당선작(2016-1)포스테키안 서평공모전 당선작(2016-1)
포스테키안 서평공모전 당선작(2016-1)POSTECH Library
 
Docker 와 Python 으로 아카마이 API 5분만에 사용해보기!
Docker 와 Python 으로 아카마이 API 5분만에 사용해보기!Docker 와 Python 으로 아카마이 API 5분만에 사용해보기!
Docker 와 Python 으로 아카마이 API 5분만에 사용해보기!Seung Heun Noh
 
국회입법조사처 발암성물질 관리체계 개선방안(2010)
국회입법조사처 발암성물질 관리체계 개선방안(2010)국회입법조사처 발암성물질 관리체계 개선방안(2010)
국회입법조사처 발암성물질 관리체계 개선방안(2010)여성환경연대
 
가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기pyrasis
 
005.총공급과 총수요
005.총공급과 총수요005.총공급과 총수요
005.총공급과 총수요Namun Cho
 
도커를 이용한 파이썬 모듈 배포하기
도커를 이용한 파이썬 모듈 배포하기도커를 이용한 파이썬 모듈 배포하기
도커를 이용한 파이썬 모듈 배포하기JunSeok Seo
 

Destaque (20)

Docker at Deview 2013
Docker at Deview 2013Docker at Deview 2013
Docker at Deview 2013
 
About docker in GDG Seoul
About docker in GDG SeoulAbout docker in GDG Seoul
About docker in GDG Seoul
 
Big query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupBig query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetup
 
Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker Overview
 
Docker at Deview 2013
Docker at Deview 2013Docker at Deview 2013
Docker at Deview 2013
 
정책가이드북
정책가이드북 정책가이드북
정책가이드북
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_start
 
RZDESK-Docker hackday
RZDESK-Docker hackdayRZDESK-Docker hackday
RZDESK-Docker hackday
 
Docker registry swift
Docker registry swiftDocker registry swift
Docker registry swift
 
boot2docker 사용시 컨테이너에서 생성한 데이터를 유지하기
boot2docker 사용시 컨테이너에서 생성한 데이터를 유지하기boot2docker 사용시 컨테이너에서 생성한 데이터를 유지하기
boot2docker 사용시 컨테이너에서 생성한 데이터를 유지하기
 
Docker registry swift_junojunho
Docker registry swift_junojunhoDocker registry swift_junojunho
Docker registry swift_junojunho
 
Pharos
PharosPharos
Pharos
 
Docker Casual Talk #2 - Dockerizing newrelic-sysmond
Docker Casual Talk #2 - Dockerizing newrelic-sysmondDocker Casual Talk #2 - Dockerizing newrelic-sysmond
Docker Casual Talk #2 - Dockerizing newrelic-sysmond
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08
 
포스테키안 서평공모전 당선작(2016-1)
포스테키안 서평공모전 당선작(2016-1)포스테키안 서평공모전 당선작(2016-1)
포스테키안 서평공모전 당선작(2016-1)
 
Docker 와 Python 으로 아카마이 API 5분만에 사용해보기!
Docker 와 Python 으로 아카마이 API 5분만에 사용해보기!Docker 와 Python 으로 아카마이 API 5분만에 사용해보기!
Docker 와 Python 으로 아카마이 API 5분만에 사용해보기!
 
국회입법조사처 발암성물질 관리체계 개선방안(2010)
국회입법조사처 발암성물질 관리체계 개선방안(2010)국회입법조사처 발암성물질 관리체계 개선방안(2010)
국회입법조사처 발암성물질 관리체계 개선방안(2010)
 
가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기
 
005.총공급과 총수요
005.총공급과 총수요005.총공급과 총수요
005.총공급과 총수요
 
도커를 이용한 파이썬 모듈 배포하기
도커를 이용한 파이썬 모듈 배포하기도커를 이용한 파이썬 모듈 배포하기
도커를 이용한 파이썬 모듈 배포하기
 

Semelhante a docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud

[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편negabaro
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)Ildoo Kim
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
Kubernetes on GCP
Kubernetes on GCPKubernetes on GCP
Kubernetes on GCPDaegeun Kim
 
20141229 dklee docker
20141229 dklee docker20141229 dklee docker
20141229 dklee dockerDK Lee
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine LearningJEEHYUN PAIK
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3Ji-Woong Choi
 
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1Ji-Woong Choi
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호용호 최
 
Db프로그래밍 환경 설정(131062 장택순)
Db프로그래밍 환경 설정(131062 장택순)Db프로그래밍 환경 설정(131062 장택순)
Db프로그래밍 환경 설정(131062 장택순)TaekSoon Jang
 
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11Dongil Yeom
 
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)I Goo Lee
 
Hadoop security DeView 2014
Hadoop security DeView 2014Hadoop security DeView 2014
Hadoop security DeView 2014Gruter
 
초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정Seonghun Kang
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편Sam Kim
 

Semelhante a docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud (20)

[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
Kubernetes on GCP
Kubernetes on GCPKubernetes on GCP
Kubernetes on GCP
 
20141229 dklee docker
20141229 dklee docker20141229 dklee docker
20141229 dklee docker
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine Learning
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
 
테스트
테스트테스트
테스트
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호
 
Db프로그래밍 환경 설정(131062 장택순)
Db프로그래밍 환경 설정(131062 장택순)Db프로그래밍 환경 설정(131062 장택순)
Db프로그래밍 환경 설정(131062 장택순)
 
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
 
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
 
Hadoop security DeView 2014
Hadoop security DeView 2014Hadoop security DeView 2014
Hadoop security DeView 2014
 
초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편
 

docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud

  • 1. docker on GCE ( Google Compute Engine) GDG Korea Cloud 2014-10-28 by judeKim
  • 2. Speaker - 레진엔터테인먼트 서버개발 자 - GDG Korea Cloud 운영자 - Facebook Korea Docker User Group 운영자
  • 4. docker위에 JIRA 와 Confluence를 올려보 자!!
  • 5. 그런데 docker는 어디 서 띄울건데?
  • 6. 레진은 이미 Google AppEngine을 사용중!!
  • 7. Google 의 GCE를 ( Google Compute Engine ) 사용해볼까? Asia Region 도 생겼다는데..
  • 8. GCE ( Google Compute Engine ) = Amazon AWS = KT ucloud
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 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 계열로 일단 진행하겠습니다.
  • 20. 간단히 설치를 진행해줍니다. https://docs.docker.com/installation/debian/#debian-wheezy-7-64-bit # /data 파티션을 100GB 할당한 SSD로 설정해줍니다. #> mkdir /data #> mkfs.ext4 /dev/sdb #> mount /dev/sdb /data #> service docker stop #> mv /var/lib/docker /data/. && ln -s /data/docker /var/lib/docker #> service docker start # /data 파티션의 부팅시 마운트를 위해 /etc/fstab에 추가해줍니다 /dev/sdb /data ext4 defaults 1 1
  • 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 )
  • 27. 항상 그렇듯이 제일 빠른 방 법은 가져다 쓰기입니다.
  • 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. 실행
  • 32. 이미지 구성 형태 jira:6.3.6a confluence:5.6.3 oracle-java:7 ubuntu:14.04
  • 33.
  • 34.
  • 35. git repository 생성 root 디렉토리에 Dockerfile 하나만 생성해주면 끝! https://registry.hub.docker.com/u/judekim/ubuntu-base/dockerfile/
  • 37.
  • 38.
  • 39.
  • 40.
  • 41. 앞서 설명한 과정들을 거쳐 repository를 아래와 같이 만듭니다. ubuntu-base ubuntu-base-oracle- java jira confluence
  • 42. Data volume container ubuntu-base ubuntu-base-oracle- java jira confluence jira-data confluence-data https://docs.docker.com/userguide/dockervolumes/
  • 44. Data volume container build # jira_data> docker build -t judekim/jira_data . # confluence_data> docker build -t judekim/confluence_data . root@docker-01:~/docker# docker images REPOSITORY TAG IMAGE ID judekim/jira_data latest aa273ba54cd3 judekim/confluence_data latest ddf41e745583 judekim/confluence 5.6.3 0dae10b133d6 judekim/jira 6.3.6 0947b9f2398a judekim/ubuntu-base-oracle-java 7 2f7064e3b9e2 judekim/ubuntu-base 14.04 af0b7b077712
  • 45. nsenter - replace for ssh https://github.com/jpetazzo/nsenter = docker exec
  • 46. nsenter - replace for ssh * 설치 docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter * alias 추가 ( .bashrc ) alias ns='nsenter --mount --uts --ipc --net --pid —target' * ns { PID }
  • 47. data volume container 실행 #> docker run --name jira-data judekim/jira_data #> docker run --name confluence-data judekim/confluence_data #> docker inspect jira-data
  • 48. jira 실행 #> docker run -d -p 8080:8080 --volumes-from jira-data --name jira judekim/jira:6.3.6 * jira container 접속 #> ns 2587
  • 49. 환경설정 # docker-01 서버 8080 접속을 위한 방화벽 오픈
  • 51. 여기서 잠깐 저는 설치시 DB는 기존에 사용하던 AWS의 RDS를 사용. 현재의 경우는 Mysql 을 별도로 설치해야 합니다. 일단 테스트를 위해 구글이 지원하는 Cloud SQL을 사용하겠습니다 사용법은 Mysql 과 동일합니다. ( 드라이버도 동일 )
  • 52. google - cloud sql 설정
  • 59. Data volume container는? ( host 에서 접근하여 확인 )
  • 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"]
  • 69. Apache 환경설정 <VirtualHost *:80> ServerName jira.test.com RedirectMatch (.*)$ https://jira.test.com$1 </VirtualHost> <IfModule mod_ssl.c> <VirtualHost *:443> ServerName jira.test.com # JIRA Proxy Configuration: <Proxy *> Order deny,allow Allow from all </Proxy> ProxyRequests Off ProxyPreserveHost On ProxyPass / http://jira.test.com:8080/ ProxyPassReverse / http://jira.test.com:8080/ </VirtualHost> </IfModule> http -> https … http(8080) apache -> apache … jira
  • 70. docker를 서비스에 활용할때 1. 먼저 서비스 분석 2. docker를 사용하는 것이 적합한지 판단 3. data와 서비스를 분리하는 간단한 설계 4. 업데이트 및 백업, 복원에 대해 설계 5. 모든것은 자동화 및 기록 ( git 활용 ) 6. data volume container, link 기능등은 필수 7. 기존에 만들어진 image들의 Dockerfile 참조 8. hub.docker.com 을 적절히 활용 9. 가벼운 것부터 ( 중요도가 낮은 것부터 ) 활용해보자. ( 고객 서비스가 아닌 내부 서비스 위주.. )

Notas do Editor

  1. 잉여가 남아서는 아니고 docker를 어떻게든 써보고 싶었습니다… -_-;
  2. 사실 생긴건 꽤 되었죠.
  3. 작업하기전에 뭘 어떻게 준비해야할지에 대해서 다음과 같은 사항을 생각해보았습니다.
  4. 일단 찾아보니 hub.docker.com 에서 제일 유명한 녀석을 찾았습니다. 하지만, postgresql 을 사용하더군요.
  5. 일단 찾아보니 hub.docker.com 에서 제일 유명한 녀석을 찾았습니다. 하지만, postgresql 을 사용하더군요. ( 옷.. 제껏도 나오는 군요.. -_-;; ) 그래서 찾다보니, 맨 아래 이녀석이 맘에 들더군요.
  6. LTS : Long Term support라는 의미로 서버를 사용한다면 해당 버전을 쓰는 것이 훨 씬 좋습니다.
  7. ubuntu-base-oracle-java:7 입니다.
  8. 파일 내용은 해당 링크에서 확인 가능합니다. ubuntu:14.04를 기준으로 향후 해당 버전을 사용할때 필요한 몇가지 사항을 추가 설정하였습니다. (vim 설치등과 같은. )
  9. 생성하면 생성하자 마자 바로 빌드가 됩니다.
  10. master 브랜치로 push 하게 되면 자동으로 빌드가 실행됩니다. 물론 옆에 start a build 버튼을 클릭해서 수동으로 빌드 할수 있습니다. 다만, 저 빌드도 개별 container 시스템으로 빌드 되는듯 합니다. 누른 수만큼 실행되고 시간이 꽤 걸리니 유의하세요.
  11. 여기서 눈여겨 보아야 할 부분은 volume 이라는 부분입니다.
  12. 이제 기본적인 것들은 다 준비되었습니다.
  13. data volume으로 사용하기 위해선 이미지를 한번 실행하여 컨테이너로 만들어 두어야 한다. container의 실행되어 있지 않아도 된다. jira-data의 inspect 화면 - Volumes 이 디렉토리를 jira에서 사용하게 될 것이다.
  14. IPAddress 및 Root 패스워드를 설정하고 Authorized Networks 에 자신의 IP 및 docker 서버의 IP를 추가합니다. 이제부터 바로 사용 가능합니다. 초기에는 root 로 접근후 테스트를 위한 DB 설정이 필요합니다.
  15. 개별 단계에 생각보다 시간이 많이 소요된다. 이는 jira의 무거움에 따른 상황이다. docker 서버의 자원 사용 현황을 모니터링 해보면 1 Core에서는 java 기반의 서비스는 약간 무리지 않은가 싶다.
  16. jira agile의 경우 별도의 라이센스 설정이 필요하기 때문에 나오는 메시지이다.
  17. jira는 jira home 에 많은 정보를 저장한다. DB 접속 정보등.. 기존에 jira-data의 inspect 정보에서 확인했던 /home/jira 의 host 경로에서 확인시 아무것도 없음을 확인하였으나, jira의 설치 이후에는 다음과 같이 파일들이 생성된것을 확인했다. ( jira-data는 현재 running 상태도 아님 )
  18. 물론 같은 volume을 다른 형태로 마운트되어 보여주는 것이라 다를 것은 없다. 즉, backup하고 싶으면 container에서 접속해서 처리하지 않고 직접 host에서 해당 위치를 복사해두어도 된다. 이렇게 접근하면 일단 native형태로 접근 하는 것이라 속도도 빠르고 잇점이 많다.
  19. 실제로 이슈도 등록해보고, 잘 동작합니다.
  20. 이후에 접속한 상태에서 설치할 패키지들을 설치한 후 설정 파일을 수정한다. ( 설정 파일들은 모두 마운트된 /data 파티션에 옮겨둔뒤에 symbolic link로 처리한다. SSL로 접속시에는 apache 서버를 통해 jira 및 confluence로 포워딩 된다.
  21. 이후에 접속한 상태에서 설치할 패키지들을 설치한 후 설정 파일을 수정한다. ( 설정 파일들은 모두 마운트된 /data 파티션에 옮겨둔뒤에 symbolic link로 처리한다.
  22. 이후에 접속한 상태에서 설치할 패키지들을 설치한 후 설정 파일을 수정한다. ( 설정 파일들은 모두 마운트된 /data 파티션에 옮겨둔뒤에 symbolic link로 처리한다.