Docker İle Web Hosting

Post on 12-Jan-2017

127 views 2 download

Transcript of Docker İle Web Hosting

Oğuzhan YILMAZMaestroPanel Kurucusuoguzhan@maestropanel.com

Docker ile Web Hosting MaestroPanel Drink-Up 18 Ağustos 2016

Sorun?

Problemin Matrix’i

1960 Öncesin Taşımacılık

Başka Bir Açıdan Problemin Matrix’i

Çözüm: Intermodal Shipping Container

Docker, Uygulamalar için Container Sistemi

Docker (2013)Nedir?

Docker Engine Docker Daemon Command Line Docker Registry

Docker Hub Cloud Servisi Uygulama Paylaşımı Otomatik İş Akışları

Cgroups Namespace Image DockerContainer

CPU, RAM, Disk, IO UTS,IPC,PID,NET,USR TAR

DockerfileNedir?

Makefile Benzeri Genişletilebilir Yeni Docker Imajı Çıktısı Verir Container Emilerini Belirler

Dockerfile BaseImage

DockerContainer

FROM node:latestMAINTAINAR MaestroPanel <ping@maestropanel.com>RUN cd /src; npm install

RUN useradd -c 'Node.js user' -m -d /home/node -s /bin/bash nodeRUN chown -R node.node /srcUSER nodeENV HOME /home/node

EXPOSE 8080CMD ["node", "/src/index.js"]

docker build --tag node:latest --file mynode .

Dockerfile

MimariOCI – Open Container Initiative

runC

universal container runtime

Docker Engine

Kernel 3.10+

containerd

client

App1 App2 App3 App4

stop,start,create,delete

Fark

Klasik Docker

1. Web Server’ı Kur2. PHP Kur (Versiyon?)3. Web Server’ı PHP’ye göre

konfigüre et. (Fast-Cgi, FPM?)4. Vhost’u konfigüre et.5. MySQL’i kur6. FTP’yi Kur, Konfigüre et.7. Wordpress Dosyalarını FTP

alanına kopyala.8. Bakımlarını takip et.

1. Docker pull wordpress2. Docker pull mysql3. Docker run wordpress –link

mysql

WordPress çalıştıralım;

www.boycottdocker.org

Demo

Web Hosting

Docker Daemon KoruyunDocker ile Hosting

docker daemon --tlsverify --tlscacert=ca.pem \--tlscert=server-cert.pem --tlskey=server-key.pem \-H=0.0.0.0:2376 --icc=false ....

firewall-cmd --permanent --zone=public --add-source=192.168.0.65/32

firewall-cmd --reload

docker daemon --config-file /etc/docker/daemon.json

veya

Containerları root hakkı ile çalıştırmayınDocker ile Hosting

docker run --name domain.com --user domain.com –d wordpress:latest –h domain.com

docker run --name domain.com --user domain.com –d wordpress:latest --cap-drop=all

Daha güvenli

useradd –M -s /sbin/nologin domain.com –c ‘docker user’ –g containers

Disk volume’larını İzole YapınDocker ile Hosting

docker volume create --name domain.com –opt o=size=1000m,uid=1543

Proses’leri ve Dosyaları LimitleyinDocker ile Hosting

docker run --name domain.com --ulimit nofile=128:256 --ulimit nproc=32:64

CPU’yu Limitleyin

Docker ile Hosting

docker run --name domain.com --cpuset=0,1 --cpu-quota=25000

Memor Limitleyin

Docker ile Hosting

docker run --name domain.com -m 128m --oom-kill-disable

Reverse-Proxy KullanınDocker ile Hosting

server { listen 80; server_name domain.com;

location / { proxy_pass http://192.168.59.103:8080/; }}

Nginx vs. HAproxy

domain.com.conf

Container PaketiDocker ile Hosting

150$/Ay4 Core CPU

8 GB Ram

10 GB Disk

Private Registry*

DNS Management

2 Public IP

100.000 GB Traffic

MySQL, MSSQL Service*

Backup Data*

ÜrünlerDocker ile Hosting

• Kubernetes (kubernetes.io)• Jelastic (jelastic.com)• KuberDock (cloudlinux.com)• Mesos (mesos.apache.org)• Docker Swarm (docker.com)• Deis (deis.io)

Dock

er D

aem

on (A

PI,C

LI)

FTP N

ginx

DNS

SQL

DockerRegistry

containers

volumesimages

port

map

s

domain.com

domain.comcontainer

domain.comvolume

12factorhttp://12factor.net/

https://github.com/maestropanel/mpod

mpod

?Oğuzhan YILMAZ

MaestroPanel Kurucusuoguzhan@maestropanel.com