際際滷

際際滷Share a Scribd company logo
PHP@Doker - w produkcji
PHPers #1
Rzesz坦w 27.01.2016
Marcin Kurzyna
 W bran甜y od 14 lat
 Wirtualna Polska S.A
 NextWebMedia
 GaduGadu
 Freelance!
 OpenSource
 Docker, PHP etc
 PLD Linux
 HashIDs
https://keybase.io/mqu
https://www.linkedin.com/in/mkurzyna
Na pocztku by chroot
 Docker  Nihil novi
 1982: chroot
 2000: Virtuozzo
 2001: Linux-Vserver
 2005: OpenVZ
 2008: LXC
 2013: Docker
 ...
https://en.wikipedia.org/wiki/Operating-system-level_virtualization
Configure once  run everywhere
Sheeple.
Dev, stage, prod
Adresy usug
 Wiele kontener坦w lokalnych
 Wiele hostow
 R坦甜ne hosty
 np. DB: single node vs master+slaves
docker run 
--name dba.2501 
docker run 
--name php.2501 
--link dba.2501:db-master 
--link dba.2501:db-slave ...
Lokalnie udajemy produkcj...
docker run 
--name php.2501 
--add-host db-master:10.0.0.2 
--add-host db-slave:10.0.0.3 ... ...na produkcji udajemy linkowanie lokalne.
Adresy usug  pt 2
 ...ale, ale ja mam wicej ni甜 jeden projekt?!
docker run --name 2501.project.local -p 80:80 ...
docker run --name skynet.project.local -p 80:80 
Bind for 0.0.0.0:80 failed: port is already allocated
docker run --name 2501.project.local -p 80:80 ...
 ...ups.
docker run --name 2501.project.local -p 127.0.0.1:80:80 
docker run --name skynet.project.local -p 127.0.0.2:80:80 
 Suchamy tylko lokalnie,
 Nie ma konfliktu adres坦w,
 ...ale: Linux only.
Nazwy host坦w
 2501.project.local
 project.stage.example.com
 project.com
server {
server_name ~(^|.)project.(local|(stage.example.)?com)$
} Nginx na ratunek.
$HTTP[host] =~ ~(^|.)project.(local|(stage.example.)?com)$ {
...
}
Lighttpd te甜 mo甜e.
 ...albo po prostu wiele vhost坦w.
Uprawnienia
 Kontenery nie s prywatne
 Repozytoria (doker hub itp.)
 Devs nie musz / nie powinni posiada hase
produkcyjnych
 Rozwizania?
 Autoryzacja w oparciu o hosty?
 Co ze zmiennym IP kontener坦w?
 Hasa w zmiennych rodowiskowych?
Volumeny
/var/lib/docker
 Przechowuje obrazy
 cignite z repozytori坦w
 Zbudowane
 Czciowe (cache)
 Przechowuje volumeny
 Przechowuje metadane
 Co to oznacza?
/var/lib/docker
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
 Brak dziaajcych kontenet坦w...
/var/lib/docker
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
 Brak zachowanych obraz坦w...
/var/lib/docker
# du -sh /var/lib/docker
1,3G /var/lib/docker
 ...ups.
 Po losowym czasie mamy 100% dysku.
VOLUME /data
 Volumeny nie s kasowane...
 To dobrze!
 Ale trzeba rcznie sprzta
 ...bo 100% w /var nie su甜y produkcji.
VOLUME /data
FROM php:latest
MAINTAINER Marcin Kurzyna <marcin@kurzyna.eu>
RUN curl -sS https://getcomposer.org/installer | 
php -- --install-dir=bin --filename=composer
VOLUME /data
WORKDIR /data
CMD ["php", "-S", "0.0.0.0:80", "-t", "/data"]FROM s16.base
ADD . /data
RUN composer install
VOLUME /data
[root@localhost ~]# docker run --rm -it -p 80:80 "s16.app"
PHP 7.0.2 Development Server started at Wed Jan 27 14:09:21 2016
Listening on http://0.0.0.0:80
Document root is /data
Press Ctrl-C to quit.
[Wed Jan 27 14:09:47 2016] 172.17.0.1:53556 [200]: /index.php - require_once():
Failed opening required '/data/vendor/autoload.php'
(include_path='.:/usr/local/lib/php') in /data/index.php on line 3
<?php
require_once __DIR__ . '/vendor/autoload.php';
 ...przecie甜 robiem composer install?!
VOLUME /data
[root@localhost ~]# docker run --rm -it -p 80:80 "s16.app"
PHP 7.0.2 Development Server started at Wed Jan 27 14:09:21 2016
Listening on http://0.0.0.0:80
Document root is /data
Press Ctrl-C to quit.
[Wed Jan 27 14:09:47 2016] 172.17.0.1:53556 [200]: /index.php - require_once():
Failed opening required '/data/vendor/autoload.php'
(include_path='.:/usr/local/lib/php') in /data/index.php on line 3
<?php
require_once __DIR__ . '/vendor/autoload.php';
 ...przecie甜 robiem composer install?!
 Definicja VOLUME zamra甜a stan katalogu
RHEL, CentOS, itp.
 Jdro bez obsugi (starego) AuFS
 Jdro bez obsugi (nowego) OverlayFS
 Pozostaje: Device Mapper
 Domylnie loop-back: obrazy w pliku
 Plik sparse: 100GB
 Docker nie sprawdza rzeczywistej iloci miejsca
RHEL, CentOS, itp.
[root@localhost ~]# docker info
...
Storage Driver: devicemapper
Data Space Total: 107.4 GB
Metadata Space Total: 2.147 GB
Operating System: CentOS Linux 7 (Core)
...
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 6,7G 1,3G 5,5G 19% /
RHEL, CentOS, itp.
[root@localhost ~]# lvcreate -L50% -T vg/pool
[root@localhost ~]# docker daemon 
--storage-driver devicemapper 
--storage-opt dm.fs=xfs 
--storage-opt dm.thinpooldev=/dev/mapper/vg-pool -H fd:/
[root@localhost ~]# docker info
...
Server Version: 1.9.1
Storage Driver: devicemapper
Pool Name: vg-pool
Pool Blocksize: 65.54 kB
Base Device Size: 107.4 GB

 Volumenty LVM  thin pool
 Rcznie ustawiane lub docker-storage-setup
One Process
One Process
 Docker mantra: jeden kontener, jeden proces
<?php
session_start();
FROM ubuntu:latest
MAINTAINER Marcin Kurzyna <marcin@kurzyna.eu>
RUN apt-get -y update
RUN apt-get -y install php5-fpm
 ...tworzy pusty plik sesji: 72b
 Sukces!
One Process
 
 Fail!
 Dlaczego?
 Dystrybucje domylnie kasuj pliki sesji z crona
 ...a cron nie dziaa.
 Kilkaset miliard坦w plik坦w po 72b:
No space left on device...
One Process
 To jak budowa obrazy?
 Rcznie uruchamia usugi?
 SysV init
 Supervisord
 Daemontools
 Runit
 SystemD
 .
 Zewntrzny cron i volumes-from?
One Process
 Stworzy obraz bazowy
 Ale VOLUME!
 Co gotowego?
 Phusion Base Image
Troch stary (Ubuntu LTS 14.04), ale:
 Cron
 Syslog
 Runit
 Wiedz co robi, wic Ty nie musisz
(cho powiniene...)
Dzikuj
Pytania?
Ad

Recommended

LXC - kontener pingwin坦w
LXC - kontener pingwin坦w
gnosek
Docker
Docker
PHPstokPHPstok
Barcamp 08/06/2010
Barcamp 08/06/2010
Micha Gruchaa
infraxstructure: Robert Mroczkowski "Maszyny si ucz - admiskie rozm坦wki p...
infraxstructure: Robert Mroczkowski "Maszyny si ucz - admiskie rozm坦wki p...
PROIDEA
Mongodb with Rails
Mongodb with Rails
Sebastian Nowak
Devbox - wirtualne rodowisko pracy
Devbox - wirtualne rodowisko pracy
Marek Bleschke
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010
Natalia Stanko
Infrastructure As Code
Infrastructure As Code
Kamil Grabowski
Laravel Pozna Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Pozna Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
HighSolutions Sp. z o.o.
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Laravel Poland MeetUp
Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu Docker
Kamil Grabowski
Od Zera do Farmera
Od Zera do Farmera
Filip Dbowski
GlusterFS
GlusterFS
ukasz Jagieo
ansible kmonticolo bezlogo
ansible kmonticolo bezlogo
Kamil Monticolo
Elasticsearch i Docker - skalowalno, wysoka dostpno i zarzdzanie zasobami
Elasticsearch i Docker - skalowalno, wysoka dostpno i zarzdzanie zasobami
Enterprise Search Warsaw Meetup
Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?
The Software House
Aplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/Redux
Dawid Rusnak
Monitoring sieci
Monitoring sieci
Kamil Grabowski
PLNOG 6: ukasz Jagieo - Wdro甜enie skalowalnego systemu plik坦w GlusterFS w ...
PLNOG 6: ukasz Jagieo - Wdro甜enie skalowalnego systemu plik坦w GlusterFS w ...
PROIDEA
Zam zasady i stw坦rz wydajny stos IP przy u甜yciu DPDK
Zam zasady i stw坦rz wydajny stos IP przy u甜yciu DPDK
Semihalf
Onet barcamp 4 - Cloud Storage
Onet barcamp 4 - Cloud Storage
OnetIT
TorqueBox - Ruby na sterydach
TorqueBox - Ruby na sterydach
marekgoldmann
Ansible - Automatyzacja zada IT
Ansible - Automatyzacja zada IT
Kamil Grabowski
Net core (dawniej 5.0) co to dla mnie. te甜 du甜o o open source
Net core (dawniej 5.0) co to dla mnie. te甜 du甜o o open source
Tomasz Kopacz
Rundeck & Ansible
Rundeck & Ansible
Maciej Lasyk
Docker praktyczne podstawy
Docker praktyczne podstawy
Sages
Chico saudades de_jesus
Aurora Boreal
Sustainable English
Sustainable English
Terry Kaufman

More Related Content

What's hot (20)

Infrastructure As Code
Infrastructure As Code
Kamil Grabowski
Laravel Pozna Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Pozna Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
HighSolutions Sp. z o.o.
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Laravel Poland MeetUp
Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu Docker
Kamil Grabowski
Od Zera do Farmera
Od Zera do Farmera
Filip Dbowski
GlusterFS
GlusterFS
ukasz Jagieo
ansible kmonticolo bezlogo
ansible kmonticolo bezlogo
Kamil Monticolo
Elasticsearch i Docker - skalowalno, wysoka dostpno i zarzdzanie zasobami
Elasticsearch i Docker - skalowalno, wysoka dostpno i zarzdzanie zasobami
Enterprise Search Warsaw Meetup
Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?
The Software House
Aplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/Redux
Dawid Rusnak
Monitoring sieci
Monitoring sieci
Kamil Grabowski
PLNOG 6: ukasz Jagieo - Wdro甜enie skalowalnego systemu plik坦w GlusterFS w ...
PLNOG 6: ukasz Jagieo - Wdro甜enie skalowalnego systemu plik坦w GlusterFS w ...
PROIDEA
Zam zasady i stw坦rz wydajny stos IP przy u甜yciu DPDK
Zam zasady i stw坦rz wydajny stos IP przy u甜yciu DPDK
Semihalf
Onet barcamp 4 - Cloud Storage
Onet barcamp 4 - Cloud Storage
OnetIT
TorqueBox - Ruby na sterydach
TorqueBox - Ruby na sterydach
marekgoldmann
Ansible - Automatyzacja zada IT
Ansible - Automatyzacja zada IT
Kamil Grabowski
Net core (dawniej 5.0) co to dla mnie. te甜 du甜o o open source
Net core (dawniej 5.0) co to dla mnie. te甜 du甜o o open source
Tomasz Kopacz
Rundeck & Ansible
Rundeck & Ansible
Maciej Lasyk
Docker praktyczne podstawy
Docker praktyczne podstawy
Sages
Infrastructure As Code
Infrastructure As Code
Kamil Grabowski
Laravel Pozna Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Pozna Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
HighSolutions Sp. z o.o.
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Laravel Poland MeetUp
Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu Docker
Kamil Grabowski
Od Zera do Farmera
Od Zera do Farmera
Filip Dbowski
ansible kmonticolo bezlogo
ansible kmonticolo bezlogo
Kamil Monticolo
Elasticsearch i Docker - skalowalno, wysoka dostpno i zarzdzanie zasobami
Elasticsearch i Docker - skalowalno, wysoka dostpno i zarzdzanie zasobami
Enterprise Search Warsaw Meetup
Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?
The Software House
Aplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/Redux
Dawid Rusnak
PLNOG 6: ukasz Jagieo - Wdro甜enie skalowalnego systemu plik坦w GlusterFS w ...
PLNOG 6: ukasz Jagieo - Wdro甜enie skalowalnego systemu plik坦w GlusterFS w ...
PROIDEA
Zam zasady i stw坦rz wydajny stos IP przy u甜yciu DPDK
Zam zasady i stw坦rz wydajny stos IP przy u甜yciu DPDK
Semihalf
Onet barcamp 4 - Cloud Storage
Onet barcamp 4 - Cloud Storage
OnetIT
TorqueBox - Ruby na sterydach
TorqueBox - Ruby na sterydach
marekgoldmann
Ansible - Automatyzacja zada IT
Ansible - Automatyzacja zada IT
Kamil Grabowski
Net core (dawniej 5.0) co to dla mnie. te甜 du甜o o open source
Net core (dawniej 5.0) co to dla mnie. te甜 du甜o o open source
Tomasz Kopacz
Rundeck & Ansible
Rundeck & Ansible
Maciej Lasyk
Docker praktyczne podstawy
Docker praktyczne podstawy
Sages

Viewers also liked (20)

Chico saudades de_jesus
Aurora Boreal
Sustainable English
Sustainable English
Terry Kaufman
Digital Health & Wellness Summit @ Mobile World Congress 2016
Digital Health & Wellness Summit @ Mobile World Congress 2016
3GDR
Express探es mudas e sons
marise brandao
Most
Most
Ivka
Fomentando los valores a traves de las ti cs
ermelcarano
Grados y costumbres
caoryates2014
Folleto informativo ESUFA
Juanjovero
Lineadetiempo vrosky
Vroskyhann
2
2
puntera
Presentasi Larutan Bufer
Presentasi Larutan Bufer
gangga98
Biopori
Biopori
Oswar Mungkasa
Format data simpatisan caleg
Format data simpatisan caleg
Operator Warnet Vast Raha
Wood derived chemicals
Wood derived chemicals
Carrie Meiriza Virriysha Putri
Capitulo1
elink02
Rius dinformaci坦. Anlisi de laigua dels rius que desemboquen al Tarragon竪s
Rius dinformaci坦. Anlisi de laigua dels rius que desemboquen al Tarragon竪s
CRP del Tarragon竪s
Conferencia en Daroca sobre la crisis
AFICE
23 February 2016 - Media Update - Lessons in PR from celebs
23 February 2016 - Media Update - Lessons in PR from celebs
Tamryn Sher
2
asergio038
Chico saudades de_jesus
Aurora Boreal
Sustainable English
Sustainable English
Terry Kaufman
Digital Health & Wellness Summit @ Mobile World Congress 2016
Digital Health & Wellness Summit @ Mobile World Congress 2016
3GDR
Express探es mudas e sons
marise brandao
Most
Most
Ivka
Fomentando los valores a traves de las ti cs
ermelcarano
Grados y costumbres
caoryates2014
Folleto informativo ESUFA
Juanjovero
Lineadetiempo vrosky
Vroskyhann
Presentasi Larutan Bufer
Presentasi Larutan Bufer
gangga98
Capitulo1
elink02
Rius dinformaci坦. Anlisi de laigua dels rius que desemboquen al Tarragon竪s
Rius dinformaci坦. Anlisi de laigua dels rius que desemboquen al Tarragon竪s
CRP del Tarragon竪s
Conferencia en Daroca sobre la crisis
AFICE
23 February 2016 - Media Update - Lessons in PR from celebs
23 February 2016 - Media Update - Lessons in PR from celebs
Tamryn Sher
Ad

Similar to PHP@Docker - w produkcji (14)

Przenie si do kontenera, czyli korzyci z Docker i Docker Compose
Przenie si do kontenera, czyli korzyci z Docker i Docker Compose
Mariusz Bk
Kubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz Woszczynski
duchowe50k
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wojciech Barczyski
Zbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zaplecza
GameDesire Academy
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PROIDEA
JDD 2016 - Marcin Stozek - Docker. Przewodnik dla poczatkujacych
JDD 2016 - Marcin Stozek - Docker. Przewodnik dla poczatkujacych
PROIDEA
Gluster FS
Gluster FS
3camp
Atlassian User Group Lower Silesia BUILDFAILUJE? PRZECIE纏 U MNIE DZIAAO
Atlassian User Group Lower Silesia BUILDFAILUJE? PRZECIE纏 U MNIE DZIAAO
NetworkedAssets
Kontenery w Azure
Kontenery w Azure
Chmurowisko
PLNOG16: Integracja Ceph w OpenStack - status i przyszo, Pawe Stefaski
PLNOG16: Integracja Ceph w OpenStack - status i przyszo, Pawe Stefaski
PROIDEA
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PROIDEA
Joomla Day Poland 15 - Docker
Joomla Day Poland 15 - Docker
Lukas Lesniewski
PLNOG19 - Emil Ggaa - Przewodnik nowoczesnego sieciowca po pasjonujcym, No...
PLNOG19 - Emil Ggaa - Przewodnik nowoczesnego sieciowca po pasjonujcym, No...
PROIDEA
Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa
Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa
Michal Balinski
Przenie si do kontenera, czyli korzyci z Docker i Docker Compose
Przenie si do kontenera, czyli korzyci z Docker i Docker Compose
Mariusz Bk
Kubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz Woszczynski
duchowe50k
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wojciech Barczyski
Zbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zaplecza
GameDesire Academy
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PROIDEA
JDD 2016 - Marcin Stozek - Docker. Przewodnik dla poczatkujacych
JDD 2016 - Marcin Stozek - Docker. Przewodnik dla poczatkujacych
PROIDEA
Gluster FS
Gluster FS
3camp
Atlassian User Group Lower Silesia BUILDFAILUJE? PRZECIE纏 U MNIE DZIAAO
Atlassian User Group Lower Silesia BUILDFAILUJE? PRZECIE纏 U MNIE DZIAAO
NetworkedAssets
Kontenery w Azure
Kontenery w Azure
Chmurowisko
PLNOG16: Integracja Ceph w OpenStack - status i przyszo, Pawe Stefaski
PLNOG16: Integracja Ceph w OpenStack - status i przyszo, Pawe Stefaski
PROIDEA
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PROIDEA
Joomla Day Poland 15 - Docker
Joomla Day Poland 15 - Docker
Lukas Lesniewski
PLNOG19 - Emil Ggaa - Przewodnik nowoczesnego sieciowca po pasjonujcym, No...
PLNOG19 - Emil Ggaa - Przewodnik nowoczesnego sieciowca po pasjonujcym, No...
PROIDEA
Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa
Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa
Michal Balinski
Ad

PHP@Docker - w produkcji

  • 1. PHP@Doker - w produkcji PHPers #1 Rzesz坦w 27.01.2016
  • 2. Marcin Kurzyna W bran甜y od 14 lat Wirtualna Polska S.A NextWebMedia GaduGadu Freelance! OpenSource Docker, PHP etc PLD Linux HashIDs https://keybase.io/mqu https://www.linkedin.com/in/mkurzyna
  • 3. Na pocztku by chroot Docker Nihil novi 1982: chroot 2000: Virtuozzo 2001: Linux-Vserver 2005: OpenVZ 2008: LXC 2013: Docker ... https://en.wikipedia.org/wiki/Operating-system-level_virtualization
  • 4. Configure once run everywhere Sheeple.
  • 6. Adresy usug Wiele kontener坦w lokalnych Wiele hostow R坦甜ne hosty np. DB: single node vs master+slaves docker run --name dba.2501 docker run --name php.2501 --link dba.2501:db-master --link dba.2501:db-slave ... Lokalnie udajemy produkcj... docker run --name php.2501 --add-host db-master:10.0.0.2 --add-host db-slave:10.0.0.3 ... ...na produkcji udajemy linkowanie lokalne.
  • 7. Adresy usug pt 2 ...ale, ale ja mam wicej ni甜 jeden projekt?! docker run --name 2501.project.local -p 80:80 ... docker run --name skynet.project.local -p 80:80 Bind for 0.0.0.0:80 failed: port is already allocated docker run --name 2501.project.local -p 80:80 ... ...ups. docker run --name 2501.project.local -p 127.0.0.1:80:80 docker run --name skynet.project.local -p 127.0.0.2:80:80 Suchamy tylko lokalnie, Nie ma konfliktu adres坦w, ...ale: Linux only.
  • 8. Nazwy host坦w 2501.project.local project.stage.example.com project.com server { server_name ~(^|.)project.(local|(stage.example.)?com)$ } Nginx na ratunek. $HTTP[host] =~ ~(^|.)project.(local|(stage.example.)?com)$ { ... } Lighttpd te甜 mo甜e. ...albo po prostu wiele vhost坦w.
  • 9. Uprawnienia Kontenery nie s prywatne Repozytoria (doker hub itp.) Devs nie musz / nie powinni posiada hase produkcyjnych Rozwizania? Autoryzacja w oparciu o hosty? Co ze zmiennym IP kontener坦w? Hasa w zmiennych rodowiskowych?
  • 11. /var/lib/docker Przechowuje obrazy cignite z repozytori坦w Zbudowane Czciowe (cache) Przechowuje volumeny Przechowuje metadane Co to oznacza?
  • 12. /var/lib/docker # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES Brak dziaajcych kontenet坦w...
  • 13. /var/lib/docker # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE Brak zachowanych obraz坦w...
  • 14. /var/lib/docker # du -sh /var/lib/docker 1,3G /var/lib/docker ...ups. Po losowym czasie mamy 100% dysku.
  • 15. VOLUME /data Volumeny nie s kasowane... To dobrze! Ale trzeba rcznie sprzta ...bo 100% w /var nie su甜y produkcji.
  • 16. VOLUME /data FROM php:latest MAINTAINER Marcin Kurzyna <marcin@kurzyna.eu> RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=bin --filename=composer VOLUME /data WORKDIR /data CMD ["php", "-S", "0.0.0.0:80", "-t", "/data"]FROM s16.base ADD . /data RUN composer install
  • 17. VOLUME /data [root@localhost ~]# docker run --rm -it -p 80:80 "s16.app" PHP 7.0.2 Development Server started at Wed Jan 27 14:09:21 2016 Listening on http://0.0.0.0:80 Document root is /data Press Ctrl-C to quit. [Wed Jan 27 14:09:47 2016] 172.17.0.1:53556 [200]: /index.php - require_once(): Failed opening required '/data/vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /data/index.php on line 3 <?php require_once __DIR__ . '/vendor/autoload.php'; ...przecie甜 robiem composer install?!
  • 18. VOLUME /data [root@localhost ~]# docker run --rm -it -p 80:80 "s16.app" PHP 7.0.2 Development Server started at Wed Jan 27 14:09:21 2016 Listening on http://0.0.0.0:80 Document root is /data Press Ctrl-C to quit. [Wed Jan 27 14:09:47 2016] 172.17.0.1:53556 [200]: /index.php - require_once(): Failed opening required '/data/vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /data/index.php on line 3 <?php require_once __DIR__ . '/vendor/autoload.php'; ...przecie甜 robiem composer install?! Definicja VOLUME zamra甜a stan katalogu
  • 19. RHEL, CentOS, itp. Jdro bez obsugi (starego) AuFS Jdro bez obsugi (nowego) OverlayFS Pozostaje: Device Mapper Domylnie loop-back: obrazy w pliku Plik sparse: 100GB Docker nie sprawdza rzeczywistej iloci miejsca
  • 20. RHEL, CentOS, itp. [root@localhost ~]# docker info ... Storage Driver: devicemapper Data Space Total: 107.4 GB Metadata Space Total: 2.147 GB Operating System: CentOS Linux 7 (Core) ... [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 6,7G 1,3G 5,5G 19% /
  • 21. RHEL, CentOS, itp. [root@localhost ~]# lvcreate -L50% -T vg/pool [root@localhost ~]# docker daemon --storage-driver devicemapper --storage-opt dm.fs=xfs --storage-opt dm.thinpooldev=/dev/mapper/vg-pool -H fd:/ [root@localhost ~]# docker info ... Server Version: 1.9.1 Storage Driver: devicemapper Pool Name: vg-pool Pool Blocksize: 65.54 kB Base Device Size: 107.4 GB Volumenty LVM thin pool Rcznie ustawiane lub docker-storage-setup
  • 23. One Process Docker mantra: jeden kontener, jeden proces <?php session_start(); FROM ubuntu:latest MAINTAINER Marcin Kurzyna <marcin@kurzyna.eu> RUN apt-get -y update RUN apt-get -y install php5-fpm ...tworzy pusty plik sesji: 72b Sukces!
  • 24. One Process Fail! Dlaczego? Dystrybucje domylnie kasuj pliki sesji z crona ...a cron nie dziaa. Kilkaset miliard坦w plik坦w po 72b: No space left on device...
  • 25. One Process To jak budowa obrazy? Rcznie uruchamia usugi? SysV init Supervisord Daemontools Runit SystemD . Zewntrzny cron i volumes-from?
  • 26. One Process Stworzy obraz bazowy Ale VOLUME! Co gotowego? Phusion Base Image Troch stary (Ubuntu LTS 14.04), ale: Cron Syslog Runit Wiedz co robi, wic Ty nie musisz (cho powiniene...)