
éå»5幎éã§ãéçºãšãã¹ãçšã®åé¢ãããç°å¢ããã°ããäœæã§ããèšå€§ãªæ°ã®ãã¯ãããžãŒãç§ãã¡ã®ç掻ã«ããããããŸããã ããããããã«ããããããããã¹ãçšã®å®å®ããç°å¢ãç·šæããã®ã¯ç°¡åãªäœæ¥ã§ã¯ãããŸããã ãŸããã³ã³ããŒãã³ãã®ãããã¯ãŒã¯çžäºäœçšããã¹ãããã³ã³ããŒãã³ãã®æ倧ã¬ãã«ã®è² è·ãåæããå¿
èŠãããå Žåãã¿ã¹ã¯ã¯ããã«é£ãããªããŸãã ç°å¢ãè¿
éã«å±éããåã
ã®ã³ã³ããŒãã³ããæè»ã«æ§æããæ©èœãè¿œå ããããšã«ãããå°ããªèå³æ·±ããããžã§ã¯ããäœæã§ããŸãã
ãã®èšäºã§ã¯ãã¯ã©ã€ã¢ã³ããµãŒããŒã¢ããªã±ãŒã·ã§ã³ããã¹ãããããã®Dockerã³ã³ãããŒã«åºã¥ãç°å¢ã®äœæã«ã€ããŠè©³ãã説æããŸãã ããã«ãã°ããŒãã«ã«èŠããšããã®èšäºã¯Dockerã®äœ¿çšãšãã®æãè¿ããšã³ã·ã¹ãã ã®è¯ãäŸã«ãªããŸãã
åé¡ã®å£°æ
ç§ãã¡ã®ã¢ããªã±ãŒã·ã§ã³ã¯ãããããçš®é¡ã®ãã°ãã¡ã€ã«ãåéãåæãä¿åããŸãã ç°å¢ã®äž»ãªã¿ã¹ã¯ã¯ãè² è·ã®ããã£ããµãŒãã¹ã®åæãã¹ããå®æœããããšã§ãã
ã ããç§ãã¡ãæã£ãŠãããã®ïŒ
- Goã§èšè¿°ããããµãŒãã¹ã¯ãã¯ã©ã€ã¢ã³ããµãŒããŒã¢ãŒããã¯ãã£ãåããŠããŸãã
- ãµãŒãã¹ã¯ãããŸããŸãªã¿ã€ãã®ã¹ãã¬ãŒãžã«äžŠè¡ããŠããŒã¿ãæžã蟌ãããšãã§ããŸãã ãã®ç¹ã¯ããã¹ãç°å¢ãæ§ç¯ãããšãã«éåžžã«éèŠã§ãã
- éçºè
ã¯ããã¹ãç°å¢ã§èŠã€ãã£ã誀åäœãè¿
éãã€ç°¡åã«åçŸããèœåãå¿
èŠãšããŠããŸãã
- è€æ°ã®ãããã¯ãŒã¯ããŒãäžã®åæ£ç°å¢ã§ã³ã³ããŒãã³ãã®ãããã¯ãŒã¯ããã¹ãããå¿
èŠããããŸãã ãããè¡ãã«ã¯ãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®ãã©ãã£ãã¯ã®æµããåæããå¿
èŠããããŸãã
- ãªãœãŒã¹ã®æ¶è²»ãå¶åŸ¡ããããŒã¢ã³ãé«è² è·ã§å®å®ããŠããããšã確èªããå¿
èŠããããŸãã
- ããã§ããã¡ãããå¯èœãªãã¹ãŠã®ã¡ããªãã¯ããªã¢ã«ã¿ã€ã ã§ããã¹ãçµæã«åºã¥ããŠèª¿ã¹ãããšæããŸãã
ãã®çµæãDockerããã³é¢é£ãã¯ãããžãŒã«åºã¥ããŠãã¹ãç°å¢ãæ§ç¯ããããšã«ããŸããã ããã«ãããåã
ã®ã³ã³ããŒãã³ãããšã«åå¥ã®ãµãŒããŒã賌å
¥ããããšãªãããã¹ãŠã®ãªã¯ãšã¹ããå®çŸããå©çšå¯èœãªããŒããŠã§ã¢ãªãœãŒã¹ãå¹æçã«äœ¿çšããããšãã§ããŸããã åæã«ãããŒããŠã§ã¢ãªãœãŒã¹ã¯ãåå¥ã®ãµãŒããŒããµãŒããŒã®ã»ããããŸãã¯éçºè
ã®ã©ãããããã§ããå ŽåããããŸãã
ãã¹ãç°å¢ã®ã¢ãŒããã¯ãã£
æåã«ãã¢ãŒããã¯ãã£ã®äž»èŠã³ã³ããŒãã³ããæ€èšããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã®ä»»æã®æ°ã®ãµãŒããŒã€ã³ã¹ã¿ã³ã¹ã
- ãšãŒãžã§ã³ãã®ä»»æã®æ°ã
- ElasticSearchãMySQLãPostgreSQLãªã©ã®ããŒã¿ãŠã§ã¢ããŠã¹ãåããåå¥ã®ç°å¢ã
- è² è·ãžã§ãã¬ãŒã¿ãŒïŒåçŽãªã¹ãã¬ã¹ãžã§ãã¬ãŒã¿ãŒãå®è£
ããŸããããYandex.TankãApache Benchmarkãªã©ãä»ã®ãžã§ãã¬ãŒã¿ãŒã䜿çšã§ããŸãïŒã
ãã¹ãç°å¢ã¯ãç°¡åã«æã¡äžããŠä¿å®ã§ããå¿
èŠããããŸãã
Dockerã³ã³ãããŒãšå€éšãµãŒãã¹ãåé¢ããDockerã³ã³ãããŒãšããã¹ãçšã«åé¢ãããã¹ããŒã¹ãæŽçã§ããdocker-machineã䜿çšããŠãåæ£ãããã¯ãŒã¯ç°å¢ãæ§ç¯ããŸããã ãã®çµæããã¹ãç°å¢ã®ã¢ãŒããã¯ãã£ã¯æ¬¡ã®ããã«ãªããŸãã

Weave Scopeã䜿çšããŠç°å¢ãèŠèŠåããŸããããã¯ãDockerã³ã³ãããŒãç£èŠããããã®éåžžã«äŸ¿å©ã§çŽæçãªãµãŒãã¹ã§ããããã§ãã

ãã®ã¢ãããŒãã䜿çšãããšãSOAã³ã³ããŒãã³ãïŒããšãã°ãç§ãã¡ã®ãããªå°ããªã¯ã©ã€ã¢ã³ããµãŒããŒã¢ããªã±ãŒã·ã§ã³ïŒã®çžäºäœçšããã¹ãããã®ã«äŸ¿å©ã§ãã
åºæ¬ç°å¢ã®å®è£
次ã«ãdocker-composeããã³docker-machineã䜿çšããŠDockerã³ã³ããã«åºã¥ããŠãã¹ãç°å¢ãäœæããåã¹ãããã詳ããèŠãŠãããŸãã
ãŸãã¯docker-machineããå§ããŸããããããã«ããããã¹ãä»®æ³ç°å¢ãç°¡åã«åŒ·èª¿ã§ããŸãã åæã«ããã¹ãã·ã¹ãã ãããã®ç°å¢ãçŽæ¥æäœããããšã¯éåžžã«äŸ¿å©ã§ãã
ãããã£ãŠããã¹ããã·ã³ãäœæããŸãã
$ docker-machine create -d virtualbox testenv Creating VirtualBox VM... Creating SSH key... Starting VirtualBox VM... Starting VM... To see how to connect Docker to this machine, run: docker-machine env testenv
ãã®ã³ãã³ãã¯ãCoreOSãšDockerãå
éšã«ã€ã³ã¹ããŒã«ãããVirtualBox VMãäœæããŸãïŒWindowsãŸãã¯MacOSã䜿çšããŠããå Žåã¯ãDocker Toolboxãã€ã³ã¹ããŒã«ããããšããå§ãããŸãã ãdocker-composeãVirtualBoxã®ã¿ïŒã docker-machineã®ãã¹ãŠã®æ©èœã«æ
£ããããšããå§ãããŸããããã¯ãç°å¢ã管çããããã®ããªã匷åãªããŒã«ã§ãããã®ã³ãã³ãã®åºåãããããããã«ãdocker-machineã¯ãä»®æ³ãã·ã³ã§ã®äœæ¥ã«å¿
èŠãªãã¹ãŠãäœæããŸãã äœæããããšãä»®æ³ãã·ã³ã皌åããŸãã 確èªããŸãããïŒ
$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM testenv virtualbox Running tcp://192.168.99.101:2376
çŽ æŽããããä»®æ³ãã·ã³ã¯å®è¡äžã§ãã çŸåšã®ã»ãã·ã§ã³ã§ã¢ã¯ã»ã¹ãæå¹ã«ããå¿
èŠããããŸãã åã®ã¹ãããã«æ»ã£ãŠãæåŸã®è¡ã泚ææ·±ãèŠãŠã¿ãŸãããã
To see how to connect Docker to this machine, run: docker-machine env testenv
ããã¯ãã»ãã·ã§ã³ã®èªåã»ããã¢ããã§ãã ãã®ã³ãã³ããå®è¡ãããšã次ã®ããã«è¡šç€ºãããŸãã
$ docker-machine env testenv export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.101:2376" export DOCKER_CERT_PATH="/Users/logpacker/.docker/machine/machines/testenv" export DOCKER_MACHINE_NAME="testenv"
ããã¯ããµãŒããŒãæ¢ãå ŽæãããŒã«ã«ã®dockerã¯ã©ã€ã¢ã³ãã«äŒããç°å¢å€æ°ã®ã»ããã§ãã æåŸã®è¡ã¯ãã³ãã§ãã ãã®ã³ãã³ããå®è¡ããŠã
ls
åºåã確èªããŸãã
$ eval "$(docker-machine env testenv)" $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM testenv * virtualbox Running tcp://192.168.99.101:2376
ACTIVE
åã§ã¯ãã¢ã¯ãã£ããªãã·ã³ã«ã¢ã¹ã¿ãªã¹ã¯ãä»ããŠããŸãã ãã·ã³ã¯çŸåšã®ã»ãã·ã§ã³å
ã§ã®ã¿ã¢ã¯ãã£ãã§ããããšã«æ³šæããŠãã ããã å¥ã®ã¿ãŒããã«ãŠã£ã³ããŠãéããããã§å¥ã®ãã·ã³ãã¢ã¯ãã£ãã«ããããšãã§ããŸãã ããã¯ãSwarmã䜿çšãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ãªã©ã®ãã¹ãã«äŸ¿å©ã§ãã ããããããã¯å¥ã®èšäºã®ãããã¯ã§ã:)ã
次ã«ãDockerãµãŒããŒããã§ãã¯ã¢ãŠãããŸãã
$ docker info docker version Client: Version: 1.8.0 API version: 1.20 Go version: go1.4.2 Git commit: 0d03096 Built: Tue Aug 11 17:17:40 UTC 2015 OS/Arch: darwin/amd64 Server: Version: 1.9.1 API version: 1.21 Go version: go1.4.3 Git commit: a34a1d5 Built: Fri Nov 20 17:56:04 UTC 2015 OS/Arch: linux/amd64
DockerãµãŒããŒã¯VMã§å®è¡ãããã®ã§ãå¿ããªãã§ãã ãããOS/ Archã«çŠç¹ãåœãŠãŠããŸããåžžã«linux / amd64ããããŸãã å°ãè±ç·ããŠãVMã®å
éšãèŠãŠã¿ãŸãããã
$ docker-machine ssh testenv
ã¯ããããã¯boot2dockerã§ãããããã¯é¢çœããªãã§ãã ããŠã³ããããã»ã¯ã·ã§ã³ãèŠãŠã¿ãŸãããã
docker@testenv:~$ mount tmpfs on / type tmpfs (rw,relatime,size=918088k) proc on /proc type proc (rw,relatime) sysfs on /sys type sysfs (rw,relatime) devpts on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000) tmpfs on /dev/shm type tmpfs (rw,relatime) fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime) /dev/sda1 on /mnt/sda1 type ext4 (rw,relatime,data=ordered) [... cgroup skipped ...] none on /Users type vboxsf (rw,nodev,relatime) /dev/sda1 on /mnt/sda1/var/lib/docker/aufs type ext4 (rw,relatime,data=ordered) docker@testenv:~$ ls /Users/ Shared/ logpacker/ docker@testenv:~$
ãã®å ŽåãMacOSã䜿çšããããã«å¿ããŠ/ Usersãã£ã¬ã¯ããªããã·ã³å
ã«ããŠã³ããããŸãïŒLinuxã®/ homeã«é¡äŒŒïŒã ããã«ãããããã«ãŒã®äžéšãšããŠãã¹ãã·ã¹ãã äžã®ãã¡ã€ã«ãééçã«æäœã§ããŸããã€ãŸããVMã®åœ¢åŒã®ã¬ã€ã€ãŒãå¿é
ããããšãªããããªã¥ãŒã ãéãã«æ¥ç¶ããã³åæã§ããŸãã ãšãŠã䟿å©ã§ãã çè«çã«ã¯ããã®VMã«ã€ããŠã¯å¿ããããšãã§ããŸããDockerãããã€ãã£ããç°å¢ã§åäœããããã«ã®ã¿å¿
èŠã§ãã ãã®å Žåãdocker-clientã®äœ¿çšã¯å®å
šã«ééçã«ãªããŸãã
ãããã£ãŠãåºæ¬çãªç°å¢ãæ§ç¯ãããããDockerã³ã³ãããŒãèµ·åããŸãã
ã³ã³ããã®æ§æãšèµ·å
ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ãã¯ã©ã¹ã¿ãŒã®ååã«åºã¥ããŠåäœããããšãã§ããŸããã€ãŸããããŒãæ°ãå€åããå Žåã«ã·ã¹ãã å
šäœã®ãã©ãŒã«ããã¬ã©ã³ã¹ãæäŸããŸãã å
éšã€ã³ã¿ãŒãµãŒãã¹APIã®ãããã§ãã¯ã©ã¹ã¿ãŒã«æ°ããããŒããè¿œå ãŸãã¯åé€ããã®ã¯ç°¡åã§ãä»ã®ããŒãããªãŒããŒããŒãããå¿
èŠããããŸããããŸããç°å¢ãæ§ç¯ããéã«ã¢ããªã±ãŒã·ã§ã³ã®ãã®ç¹åŸŽãèæ
®ããå¿
èŠããããŸãã
ååãšããŠããã¹ãŠãDockerã®ã€ããªãã®ãŒã1ã€ã®ããã»ã¹-1ã€ã®ã³ã³ãããŒãã«ããé©åããŠããŸãã ãããã£ãŠãæã
ã¯èŠç¯ããé¢ãããåãããšãããŸãã éå§æã«ã次ã®æ§æãå®è¡ããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã®ãµãŒããŒåŽã®3ã€ã®ã³ã³ãããŒã
- ã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ã€ã¢ã³ãéšåãæã€3ã€ã®ã³ã³ããã
- åãšãŒãžã§ã³ãã®è² è·ãžã§ãã¬ãŒã¿ãŒã ããšãã°ãNgnixã¯ãã°ãçæããYandex.TankãŸãã¯Apache Benchmarkã䜿çšããŠãããåºæ¿ããŸãã
- ãããŠãå¥ã®ã³ã³ããã§ãã€ããªãã®ãŒããé¢ããŸãã ç§ãã¡ã®ãµãŒãã¹ã¯ãããããããã¥ã¢ã«ã¢ãŒãããã€ãŸã ã¯ã©ã€ã¢ã³ããšãµãŒããŒã¯åããã¹ãäžã«ãããããã«ãããã¯ã¢ããªã±ãŒã·ã§ã³ã®1ã€ã®ã€ã³ã¹ã¿ã³ã¹ã«ããããã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ãšããŠããã«åäœããŸãã ã¹ãŒããŒãã€ã¶ãŒã®ç®¡çäžã«ããã³ã³ããã§èµ·åããã¡ã€ã³ããã»ã¹ãšåãã³ã³ããã§ç¬èªã®å°ããªè² è·ãžã§ãã¬ãŒã¿ãèµ·åããŸãã
ãããã£ãŠãã¢ããªã±ãŒã·ã§ã³ã®ã¢ã»ã³ãã«ããããã€ããªããããŸã-ããã¯Golangã®ãããã§1ã€ã®ãã¡ã€ã«ã§ã:)ããã¹ãç°å¢ã®äžéšãšããŠããµãŒãã¹ãèµ·åããããã®ãŠãããŒãµã«ã³ã³ãããåéããŸãã éãã¯ãéä¿¡ãããããŒïŒãµãŒããŒãŸãã¯ãšãŒãžã§ã³ããèµ·åããïŒã«ãããã³ã³ããã®èµ·åæã«ãããã管çããŸãã ããã¥ã¢ã«ã¢ãŒããã§ãµãŒãã¹ãéå§ããå ŽåãæåŸã®æ®µèœã«ã¯ããããªãã¥ã¢ã³ã¹ããããŸãããããã«ã€ããŠã¯åŸã§è©³ãã説æããŸãã
ãã®ããã
docker-compose.yml
æºåããŠããŸãã ããã¯ãdocker-composeã®ãã£ã¬ã¯ãã£ããå«ããã¡ã€ã«ã§ããããã«ããã1ã€ã®ã³ãã³ãã§ãã¹ãç°å¢ãäžããããšãã§ããŸãã
ãã®ãã¡ã€ã«ã§ã¯ãã¹ãŠãæšæºã§ãã æåã«äž»ãªããžããªãšããŠelasticsearchãå®è¡ãã次ã«nginxã§3ã€ã®ã€ã³ã¹ã¿ã³ã¹ãå®è¡ããŸããããã¯ããŒããããã€ããŒãšããŠæ©èœããŸãã 次ã«ããµãŒããŒã¢ããªã±ãŒã·ã§ã³ãèµ·åããŸãã åŸç¶ã®ãã¹ãŠã®ã³ã³ããã¯åã®ã³ã³ãããšãªã³ã¯ãããŠããããšã«æ³šæããŠãã ããã Dockerãããã¯ãŒã¯ã®äžéšãšããŠãããã«ããååã«ããã³ã³ãããŒãžã®ã¢ã¯ã»ã¹ãèš±å¯ãããŸãã ããå°ãäœãã«ãããã¥ã¢ã«ã¢ãŒããã§ã®ãµãŒãã¹ã®èµ·åãåæãããšãããã®ãã€ã³ãã«æ»ã£ãŠè©³çŽ°ã«æ€èšããŸãã ãŸãããšãŒãžã§ã³ãã¯ããµãŒããŒã¢ããªã±ãŒã·ã§ã³ã€ã³ã¹ã¿ã³ã¹ãé
眮ãããŠããæåã®ã³ã³ããã«ãªã³ã¯ãããŸãã ããã¯ã3ã€ãã¹ãŠã®ãšãŒãžã§ã³ãããã®ãµãŒããŒã«ãã°ã転éããããšãæå³ããŸãã
ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ãæ°ããããŒããã¯ã©ã¹ã¿ãŒã«è¿œå ããããã«èšèšãããŠããããšãŒãžã§ã³ããŸãã¯ãµãŒããŒã¯ã1ã€ã®æ¢åã®ã¯ã©ã¹ã¿ãŒããŒãã«ã€ããŠå ±åããã ãã§ãã·ã¹ãã å
šäœã«é¢ããå®å
šãªæ
å ±ãåãåããŸãã åãµãŒããŒã€ã³ã¹ã¿ã³ã¹ã®æ§æãã¡ã€ã«ã§ã¯ãæåã®ããŒãã瀺ãããšãŒãžã§ã³ãã¯ã·ã¹ãã ã®çŸåšã®ç¶æ
ã«é¢ãããã¹ãŠã®æ
å ±ãèªåçã«åãåããŸãã ã·ã¹ãã ã®ãã¹ãŠã®ããŒããèµ·åããŠãã°ããããŠããããã®ã€ã³ã¹ã¿ã³ã¹ããªãã«ããŸãã ç§ãã¡ã®å Žåãã¯ã©ã¹ã¿ãŒã¯ãããç°¡åã«è»¢éããã·ã¹ãã ã«é¢ãããã¹ãŠã®æ
å ±ã¯ãã§ã«ãã¹ãŠã®åå è
ã«é
åžãããŠããŸãã
ãããŠãã1ã€ãããªã¥ãŒã ã®ããŠã³ãã®ããžãã¯ã«æ³šæããŠãã ããã nginxãå«ãŸããã³ã³ããã§ã¯ãDockerãããã¯ãŒã¯ã§å©çšå¯èœãªååä»ãããªã¥ãŒã ãæå®ãããšãŒãžã§ã³ããå«ãŸããã³ã³ããã§ã¯ããµãŒãã¹ã®ååãæå®ããã ãã§æ¥ç¶ããŸãã ãããã£ãŠãã³ã³ã·ã¥ãŒããšããŒããããã€ãã®éã§å
±æããªã¥ãŒã ãååŸããŸãã
ãã®ãããç°å¢ãéå§ããŸãã
$ docker-compose up -d
ãã¹ãŠãæ£åžžã«éå§ããããšã確èªããŸã
$ docker-compose ps Name Command State Ports -------------------------------------------------------------------------------------------- assets_lp_agent_1_1 bash -c cd /opt/logpacker ... Up assets_lp_agent_2_1 bash -c cd /opt/logpacker ... Up assets_lp_agent_3_1 bash -c cd /opt/logpacker ... Up assets_lp_server_1_1 bash -c cd /opt/logpacker ... Up 9995/tcp, 9998/tcp, 9999/tcp assets_lp_server_2_1 bash -c cd /opt/logpacker ... Up 9995/tcp, 9998/tcp, 9999/tcp assets_lp_server_3_1 bash -c cd /opt/logpacker ... Up 9995/tcp, 9998/tcp, 9999/tcp assets_ngx_1_1 nginx -g daemon off; Up 443/tcp, 80/tcp assets_ngx_2_1 nginx -g daemon off; Up 443/tcp, 80/tcp assets_ngx_3_1 nginx -g daemon off; Up 443/tcp, 80/tcp elastic /docker-entrypoint.sh elas ... Up 9200/tcp, 9300/tcp
ããŠãç°å¢ã¯äžæããæ©èœãããã¹ãŠã®ããŒãã転éãããŸããã çè«çã«ã¯ããã¹ããéå§ã§ããŸãããããã€ãã®ãã€ã³ããå®äºããå¿
èŠããããŸãã
ã³ã³ããã®åœå
ããã¥ã¢ã«ã¢ãŒããã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããã³ã³ããã«æ»ããŸãããã ãã®ã³ã³ããã®ã¡ã€ã³ããã»ã¹ã¯ãããŒããžã§ãã¬ãŒã¿ãŒïŒæãåçŽãªã·ã§ã«ã¹ã¯ãªããïŒã§ãã ããã¹ãæååãçæããããããããã¹ãããã°ããã¡ã€ã«ã«å
¥ããŸããããã¯ãã¢ããªã±ãŒã·ã§ã³ã®è² è·ã«ãªããŸãã æåã«ã
supervisord
äžã§å®è¡ããã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠã³ã³ãããæ§ç¯ããå¿
èŠããããŸãã ç°å¢å€æ°ãæ§æãã¡ã€ã«ã«è»¢éããæ©èœãå¿
èŠãªããã
supervisord
ã®ææ°ããŒãžã§ã³ã䜿çšããŠãã ããã
supervisord
ããŒãžã§ã³3.2.0ãé©ããŠããŸãããããŒã¹ã€ã¡ãŒãžãšããŠæ¡çšããUbuntu 14.04 LTSã§ã¯ã
supervisord
ããŒãžã§ã³ã¯ããªãå€ãïŒ3.0b2ïŒã§ãã
supervisord
ã®ææ°ããŒãžã§ã³ã
pip
çµç±ã§ã€ã³ã¹ããŒã«ããŸãã çµæã®Dockerfileã¯æ¬¡ã®ãšããã§ãã
ããŒããžã§ãã¬ãŒã¿ãŒã¯éåžžã«ã·ã³ãã«ã§ãã
èµ·åã¹ã¯ãªãããè€éã§ã¯ãããŸããã
#!/bin/bash # run daemon supervisord -c /etc/supervisor/supervisor.conf # launch randomizer /opt/random.sh
ãã¹ãŠã®ããªãã¯ã¯ã
supervisord
æ§æãã¡ã€ã«ã«ãããDockerã³ã³ãããŒãèµ·åããŸãã
æ§æãã¡ã€ã«ãæ€èšããŠãã ããã
[program:logpacker_daemon] command=/opt/logpacker/logpacker %(ENV_LOGPACKER_OPTS)s directory=/opt/logpacker/ autostart=true autorestart=true startretries=10 stderr_logfile=/var/log/logpacker.stderr.log stdout_logfile=/var/log/logpacker.stdout.log
%(ENV_LOGPACKER_OPTS)s
泚æããŠãã ããã Supervisordã¯ãç°å¢å€æ°ããæ§æãã¡ã€ã«ãžã®é åãå®è¡ã§ããŸãã å€æ°ã¯
%(ENV_VAR_NAME)s
ãšããŠæžã蟌ãŸãããã®å€ã¯ããŒã¢ã³ã®èµ·åæã«æ§æãã¡ã€ã«ã«ä»£å
¥ãããŸãã
次ã®ã³ãã³ããå®è¡ããŠã³ã³ãããèµ·åããŸãã
$ docker run -it -d --name=dualmode --link=elastic -e 'LOGPACKER_OPTS=-s -a -v -devmode' logpacker_dualmode /opt/random.sh
-e
ã¹ã€ããã䜿çšãããšãå¿
èŠãªç°å¢å€æ°ãèšå®ã§ããã³ã³ããå
ã§ã°ããŒãã«ã«èšå®ãããŸãã ãããŠã
supervisord
èšå®ãã¡ã€ã«ã§ããã眮ãæããŸãã ãããã£ãŠãããŒã¢ã³ã®ã¹ã¿ãŒãã¢ããããŒã管çããå¿
èŠãªã¢ãŒãã§å®è¡ã§ããŸãã
ã€ããªãã®ãŒãšã¯å°ãççŸããŠããŸãããç§ãã¡ã¯æ®éçãªã€ã¡ãŒãžãåŸãŸããã äžãèŠãŠã¿ãŸãããïŒ
ç°å¢ $ docker exec -it dualmode bash $ env HOSTNAME=6b2a2ae3ed83 ELASTIC_NAME=/suspicious_dubinsky/elastic TERM=xterm ELASTIC_ENV_CA_CERTIFICATES_JAVA_VERSION=20140324 LOGPACKER_OPTS=-s -a -v -devmode ELASTIC_ENV_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre ELASTIC_ENV_JAVA_VERSION=8u66 ELASTIC_ENV_ELASTICSEARCH_REPO_BASE=http://packages.elasticsearch.org/elasticsearch/1.7/debian ELASTIC_PORT_9200_TCP=tcp://172.17.0.2:9200 ELASTIC_ENV_ELASTICSEARCH_VERSION=1.7.4 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ELASTIC_PORT_9300_TCP_ADDR=172.17.0.2 ELASTIC_ENV_ELASTICSEARCH_MAJOR=1.7 ELASTIC_PORT_9300_TCP=tcp://172.17.0.2:9300 PWD=/ ELASTIC_PORT_9200_TCP_ADDR=172.17.0.2 ELASTIC_PORT_9200_TCP_PROTO=tcp ELASTIC_PORT_9300_TCP_PORT=9300 SHLVL=1 HOME=/root ELASTIC_ENV_JAVA_DEBIAN_VERSION=8u66-b17-1~bpo8+1 ELASTIC_PORT_9300_TCP_PROTO=tcp ELASTIC_PORT=tcp://172.17.0.2:9200 LESSOPEN=| /usr/bin/lesspipe %s ELASTIC_ENV_LANG=C.UTF-8 LESSCLOSE=/usr/bin/lesspipe %s %s ELASTIC_PORT_9200_TCP_PORT=9200 _=/usr/bin/env
ã³ã³ããã®èµ·åæã«æ瀺çã«æå®ããå€æ°ã«å ããŠããªã³ã¯ãããã³ã³ããã«é¢é£ãããã¹ãŠã®å€æ°ãã€ãŸããIPã¢ãã¬ã¹ããã¹ãŠã®éããŠããããŒããENVãã£ã¬ã¯ãã£ãã䜿çšããŠelasticsearchã€ã¡ãŒãžãæ§ç¯ãããšãã«æ瀺çã«èšå®ããããã¹ãŠã®å€æ°ã衚瀺ãããŸãã ãã¹ãŠã®å€æ°ã«ã¯ããšã¯ã¹ããŒãããã³ã³ããã®ååãšãã®æ¬è³ªã瀺ãååã®æ¥é èŸããããŸãã ããšãã°ã
ELASTIC_PORT_9300_TCP_ADDR
ã¯ãããŒã9300ãéããŠãã
ELASTIC_PORT_9300_TCP_ADDR
ãšããååãšãã®IPã¢ãã¬ã¹ãæã€ã³ã³ãããŒãæãå€æ°ã«å€ãæ ŒçŽãããããšãæå³ããŸãããªã³ã¯ãããã³ã³ããã®ããŒã¿ã åæã«ãDockerã³ã³ããã§å®è¡ãããŠããã¢ããªã±ãŒã·ã§ã³ã§ãããã䜿çšããããšãå¯èœã§ãã
ã³ã³ãã管çããã³ç£èŠã·ã¹ãã
ãã®ããããã¹ãŠã®åæèŠä»¶ãæºãããã¹ãç°å¢ãæ§ç¯ããŸããã ããã€ãã®ãã¥ã¢ã³ã¹ããããŸããã ãŸããWeave Scopeãã€ã³ã¹ããŒã«ããŸãïŒã¹ã¯ãªãŒã³ã·ã§ããã¯èšäºã®åé ã«ãããŸããïŒã Weave Scopeã䜿çšãããšãäœæ¥ç°å¢ãèŠèŠåã§ããŸãã ã³ã³ããã«é¢ãããªã³ã¯ãšæ
å ±ã®è¡šç€ºã«å ããŠãä»»æã®ã³ã³ããã«
attach
ãããããã©ãŠã¶ã§çŽæ¥
sh
ã䜿çšããŠæ¬æ Œçãªã¿ãŒããã«ãèµ·åãããã§ããŸãã ãããã¯ããããã°ãšãã¹ãã«äžå¯æ¬ ãªæ©èœã§ãã ãã®ããããã¹ããã·ã³ãããã¢ã¯ãã£ãã»ãã·ã§ã³ã®äžéšãšããŠæ¬¡ã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸãã
$ wget -O scope https://github.com/weaveworks/scope/releases/download/latest_release/scope $ chmod +x scope $ scope launch
ãããã®ã³ãã³ããå®è¡ããåŸãã¢ãã¬ã¹
VM_IP ïŒ4040ã«ç§»åãããšã次ã®å³ã«ç€ºãã³ã³ãããŒç®¡çã€ã³ã¿ãŒãã§ã€ã¹ã«å°éããŸãã

ãŸããã»ãšãã©ãã¹ãŠã®æºåãã§ããŠããŸãã å®å
šãªå¹žçŠã®ããã«ãç£èŠã·ã¹ãã ãäžè¶³ããŠããŸãã Googleã®cAdvisorã掻çšããŠãã ããã
$ docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest
VM_IP ïŒ8080ã«ã¯ããªã¢ã«ã¿ã€ã ã®ãªãœãŒã¹ç£èŠã·ã¹ãã ããããŸãã 次ã®ãããªç°å¢ã®åºæ¬çãªã¡ããªãã¯ã远跡ããã³åæã§ããŸãã
- ã·ã¹ãã ãªãœãŒã¹ã®äœ¿çšã
- ãããã¯ãŒã¯è² è·ã
- ããã»ã¹ã®ãªã¹ãã
- ãã®ä»ã®æçšãªæ
å ±ã
以äžã®ã¹ã¯ãªãŒã³ã·ã§ããã¯ãcAdvisorã€ã³ã¿ãŒãã§ãŒã¹ã瀺ããŠããŸãã

ãããã«
Dockerã³ã³ããã䜿çšããŠããã¹ãŠã®ããŒãã®èªåå±éãšãããã¯ãŒã¯çžäºäœçšã®æ©èœãåããæ¬æ Œçãªãã¹ãç°å¢ãæ§ç¯ããŸãããæãéèŠãªããšã¯ãåã³ã³ããŒãã³ããšã·ã¹ãã å
šäœã®æè»ãªæ§æã§ãã ãã¹ãŠã®åºæ¬èŠä»¶ãå®è£
ãããŠããŸããã€ãŸãã
- ãããã¯ãŒã¯æ¥ç¶ããã¹ãããããã®å®å
šãªãããã¯ãŒã¯ãšãã¥ã¬ãŒã·ã§ã³ã
- ã¢ããªã±ãŒã·ã§ã³ã§ã®ããŒãã®è¿œå ãšåé€ã¯ãdocker-compose.ymlã®å€æŽã«ããå®è¡ãããåäžã®ã³ãã³ãã§é©çšãããŸãã
- ãã¹ãŠã®ããŒãã¯ããããã¯ãŒã¯ç°å¢ã«é¢ããæ
å ±ãå®å
šã«åä¿¡ã§ããŸãã
- ããŒã¿ãŠã§ã¢ããŠã¹ã®è¿œå ãšåé€ã¯ã1ã€ã®ã³ãã³ãã§å®è¡ãããŸãã
- ã·ã¹ãã ã®ç®¡çãšç£èŠã¯ããã©ãŠã¶ããå©çšã§ããŸãã ããã¯ãã¢ããªã±ãŒã·ã§ã³ã®é£ã®ã³ã³ããã§åå¥ã«å®è¡ãããããŒã«ã䜿çšããŠå®è£
ãããŸããããã«ããããã¹ãã·ã¹ãã ããããããåé¢ã§ããŸãã
èšäºã«èšèŒãããŠãããã¹ãŠã®ããŒã«ãžã®ãªã³ã¯ïŒ