First steps to a new development workflow
Guilhem Marty (@le_pixel)
1001pharmacies.com
@1001pharmaDev
Virtual Machines
OS
Host Machine
Hypervisor
Guest OS Guest OS Guest OS Guest OS
App 1 App 2 App 2’ App 3
DB DB AMPQ
Bins/Libs Bins/Libs Bins/LibsBins/Libs
LXC
OS
Host Machine
Docker
App 1 App 2 App 2’ App 3
Bins/Libs Bins/LibsBins/Libs
[Yem@home]-[/var/www] $ docker pull debian:wheezy
[Yem@home]-[/var/www] $ docker run -i -t debian:wheezy /bin/bash
root@e3cfb271ab6e:/#
Run a container
[Yem@home]-[/var/www] $ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL
SIZE
debian wheezy 1265e16d0c28 2 days ago 84.98 MB
FROM debian:wheezy
Dockerfile
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update 
&& apt-get install -y 
apache2 
php5 
mysql-client
EXPOSE 80
CMD ./usr/sbin/apache2ctl -D FOREGROUND
Build & Run
[Yem@home]-[/var/www] $ docker build -t app ./
[Yem@home]-[/var/www] $ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL
SIZE
app latest 98a0cc8f6e58 6 seconds ago 169.9 MB
debian wheezy 1265e16d0c28 2 days ago 84.98 MB
[Yem@home]-[/var/www] $ docker run -d -P app
2c7082ee3b572d0743c0f09ecbab8a27a9a6ab70d354f901dc781feb1c835d21
[Yem@home]-[/var/www] $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
9330f7f0947d app:latest "./usr/sbin/apache2c 15 minutes ago Up 15
minutes 0.0.0.0:49153->3306/tcp clever_feynman
[Yem@home]-[/var/www] $ docker run -d -P 
--name app-db 
-e "MYSQL_ROOT_PASSWORD=root" 
mariadb:10
Run a database
[Yem@home]-[/var/www] $ docker run -d -P 
--name app-db 
-e "MYSQL_ROOT_PASSWORD=root" 
mariadb:10
Link containers 1/2
[Yem@home]-[/var/www] $ docker run -d -P 
--name app-web 
--link app-db:db
app
/bin/bash
Link containers 2/2
root@55d016720713:/# cat /etc/hosts
172.17.0.4 55d016720713
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 db
root@55d016720713:/# mysql -u root -proot -h db -e "SHOW DATABASES;"
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
Questions ?

First steps to docker

  • 1.
    First steps toa new development workflow Guilhem Marty (@le_pixel) 1001pharmacies.com @1001pharmaDev
  • 2.
  • 4.
    OS Host Machine Hypervisor Guest OSGuest OS Guest OS Guest OS App 1 App 2 App 2’ App 3 DB DB AMPQ Bins/Libs Bins/Libs Bins/LibsBins/Libs
  • 7.
  • 8.
    OS Host Machine Docker App 1App 2 App 2’ App 3 Bins/Libs Bins/LibsBins/Libs
  • 9.
    [Yem@home]-[/var/www] $ dockerpull debian:wheezy [Yem@home]-[/var/www] $ docker run -i -t debian:wheezy /bin/bash root@e3cfb271ab6e:/# Run a container [Yem@home]-[/var/www] $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE debian wheezy 1265e16d0c28 2 days ago 84.98 MB
  • 10.
    FROM debian:wheezy Dockerfile ENV DEBIAN_FRONTENDnoninteractive RUN apt-get update && apt-get install -y apache2 php5 mysql-client EXPOSE 80 CMD ./usr/sbin/apache2ctl -D FOREGROUND
  • 11.
    Build & Run [Yem@home]-[/var/www]$ docker build -t app ./ [Yem@home]-[/var/www] $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE app latest 98a0cc8f6e58 6 seconds ago 169.9 MB debian wheezy 1265e16d0c28 2 days ago 84.98 MB [Yem@home]-[/var/www] $ docker run -d -P app 2c7082ee3b572d0743c0f09ecbab8a27a9a6ab70d354f901dc781feb1c835d21 [Yem@home]-[/var/www] $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9330f7f0947d app:latest "./usr/sbin/apache2c 15 minutes ago Up 15 minutes 0.0.0.0:49153->3306/tcp clever_feynman
  • 14.
    [Yem@home]-[/var/www] $ dockerrun -d -P --name app-db -e "MYSQL_ROOT_PASSWORD=root" mariadb:10 Run a database
  • 15.
    [Yem@home]-[/var/www] $ dockerrun -d -P --name app-db -e "MYSQL_ROOT_PASSWORD=root" mariadb:10 Link containers 1/2 [Yem@home]-[/var/www] $ docker run -d -P --name app-web --link app-db:db app /bin/bash
  • 16.
    Link containers 2/2 root@55d016720713:/#cat /etc/hosts 172.17.0.4 55d016720713 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 db root@55d016720713:/# mysql -u root -proot -h db -e "SHOW DATABASES;" +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+
  • 18.