+ All Categories
Home > Technology > Docker Continuous Delivery Workshop

Docker Continuous Delivery Workshop

Date post: 02-Dec-2014
Category:
Upload: jirayut-nimsaeng
View: 286 times
Download: 2 times
Share this document with a friend
Description:
Docker Continuous Delivery Workshop slide in Docker Training & Workshop for DevOps and Continuous Delivery at OSS Festival 2014 Thailand on October 11, 2014
26
Continuous Delivery Workshop Jirayut Nimsaeng (Dear) Docker for DevOps and Continuous Delivery Workshop October 11, 2014 @ OSS Festival 2014
Transcript
Page 1: Docker Continuous Delivery Workshop

Continuous DeliveryWorkshop

Jirayut Nimsaeng (Dear)

Docker for DevOps and Continuous Delivery WorkshopOctober 11, 2014 @ OSS Festival 2014

Page 2: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Docker installation● Boot2docker for Windows & Mac OS X

– http://boot2docker.io– Ready to run Docker with

● VirtualBox 4.3.14 (latest version is 4.3.16)● Docker latest version (1.2.0)● Lightweight Linux distribution● Boot in 5-10s

Page 3: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Docker installation● Ubuntu based

– https://docs.docker.com/installation/ubuntulinux/– Recommend Ubuntu 14.04 64-bit LTS– curl -sSL https://get.docker.io/ubuntu/ | sudo sh

● Redhat based– https://docs.docker.com/installation/centos/– Recommend CentOS 7 – EPEL repository enabled first– sudo yum install docker-io

Page 4: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Docker architecture

Host

Docker Daemon

Web Server 80 xxxx

Docker Containers

Database

Docker Client

socket

3306

Page 5: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Boot2docker architecture

Host

Virtualbox VM

Docker DaemonSSH

20352022

22

Web Server

boot2docker-vm

80 1024+

Docker Containers

Database

2035

Hos

t-on

ly

80

80

3306

Page 6: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

VirtualBox port forward

Page 7: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Run first Docker container● docker images● docker pull 10.1.3.227:5000/ubuntu:latest● docker images● docker run 10.1.3.227:5000/ubuntu echo “Hello

World”● docker run -i -t 10.1.3.227:5000/ubuntu /bin/bash

– whoami– hostname– cat /etc/*release*– exit

Page 8: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Docker basic operations● docker search [name]● docker pull [name[:tag]]

– docker pull centos– docker pull ubuntu:latest

● docker run [-itd] [name[:tag]] [command]● docker ps● docker ps -a● docker rm [name or cid]● docker rm [part of cid]● docker images● docker rmi [name:tag or iid]

Page 9: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Image name and tag● If you do docker command without tag, it will

pull Docker image with every tags● docker pull 10.1.3.227:5000/ubuntu:12.04● docker images● docker pull 10.1.3.227:5000/ubuntu● docker images

Page 10: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Create your first image● docker run -i -t 10.1.3.227:5000/ubuntu /bin/bash

– vim– echo 'Acquire::http::Proxy "http://10.1.3.227:3142";' > /etc/apt/apt.conf.d/11proxy– apt-get update– apt-get install vim– touch vim-installed– ls– exit

● docker ps -a● docker commit [cid] ubuntu-vim● docker images● docker run -i -t ubuntu-vim /bin/bash

– ls

Page 11: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Docker registry operation● Register your account at https://hub.docker.com● You can pull without logging-in● docker login● docker push ubuntu-vim● docker tag ubuntu-vim winggundamth/ubuntu-vim● docker images● docker push winggundamth/ubuntu-vim● docker pull xxx/ubuntu-vim

Page 12: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Expose ports● ifconfig eth1● docker run -i -t -p 80:80 ubuntu-vim /bin/bash

– apt-get install apache2– service apache2 start– Go to browser: http://ipaddress– exit

● Commit your apache2 container as ubuntu-apache2 with tag 14.04 and latest

● Clear your stopped containers

Page 13: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Run as daemon & expose port option● docker run ubuntu-apache2● docker run -d ubuntu-apache2 service apache2 start● docker run -d ubuntu-apache2 apachectl

-DFOREGROUND● docker run -d -p 80:80 ubuntu-apache2 apachectl

-DFOREGROUND● docker run -d -p 8880:80 ubuntu-apache2 apachectl

-DFOREGROUND● docker run -d -p 80 ubuntu-apache2 apachectl

-DFOREGROUND● docker ps

Page 14: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Docker container operation● docker ps● docker stop [container id or name]● docker start [container id or name]● docker kill [container id or name]● docker logs [container id or name]● docker diff [container id or name]● docker top [container id or name]● docker inspect [container id or name]

Page 15: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Dockerfile● Create filename Dockerfile● Dockerfile Syntax

– FROM - defines base image– MAINTAIN – author information– RUN – executes command– ENV – sets environment– EXPOSE – expose a port– ADD – add local file– CMD – default command to execute

● Execute Dockerfile with command docker build● Docker will keep cache when execute each command above

– Use docker build -–no-cache if you want to build without cache

Page 16: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

SSH Image to DockerfileFROM ubuntu-vimRUN apt-get install -y openssh-serverRUN sed -i 's/required pam_loginuid.so/optional pam_loginuid.so/g' /etc/pam.d/sshdRUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/g' /etc/ssh/sshd_configRUN mkdir /var/run/sshdRUN echo "root:test1234" | chpasswdCMD /usr/sbin/sshd -DEXPOSE 22

Page 17: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Build & run image from Dockerfile● vi Dockerfile● docker build -t ubuntu-ssh .● docker images● docker run -d -p 2230:22 ubuntu-ssh● docker ps● ssh -p 2230 root@localhost

Page 18: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Let's deploy WordPress

Host

Docker Daemon

ApacheWordpress

80 80

Docker Containers

MySQL3306

Page 19: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Build MySQLFROM ubuntu-vimENV DEBIAN_FRONTEND noninteractiveRUN echo 'mysql-server mysql-server/root_password password test1234' | debconf-set-selectionsRUN echo 'mysql-server mysql-server/root_password_again password test1234' | debconf-set-selectionsRUN apt-get install -y mysql-serverRUN sed -i 's/bind-address/#bind-address/g' /etc/mysql/my.cnfRUN service mysql start && \ mysql -u root -ptest1234 -e "CREATE DATABASE wordpress CHARACTER SET utf8 COLLATE utf8_general_ci;" && \ mysql -u root -ptest1234 -e "GRANT ALL PRIVILEGES ON wptest.* TO wptest@'%' IDENTIFIED BY 'wptest' WITH GRANT OPTION;"CMD /usr/bin/mysqld_safeEXPOSE 3306

Page 20: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Build ApacheFROM ubuntu-vimENV DEBIAN_FRONTEND noninteractiveRUN apt-get install -y libapache2-mod-php5 php5 php5-mysql php5-curlADD wordpress /var/www/wordpressADD default /etc/apache2/sites-available/000-default.confRUN a2enmod rewriteRUN chown -R www-data:www-data /var/wwwCMD apachectl -DFOREGROUNDEXPOSE 80

Page 21: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Apache Configuration<VirtualHost *:80>

DocumentRoot /var/www/wordpress

<Directory /var/www/wordpress>

AllowOverride All

</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Page 22: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Wordpress Configuration● wget http://10.1.3.227:8000/wordpress-

4.0.tar.gz● tar xvfz wordpress-4.0.tar.gz

Page 23: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Run it● docker run -d -p 3306:3306 --name mysql

ubuntu-mysql● docker run -d -p 80:80 ubuntu-wp● Go to http://192.168.59.103

– Use 172.17.42.1 as database host ip

Page 24: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Continuous Delivery with Docker

MySQLDockerfile

Host 1 (Dev/Build Server)

Docker Engine

MyS

QL D

ata Image

MyS

QL D

ata Image

DockerRegistry

Host 2 (Container Server)

1.Build

3.Push

7.Pull

8.Run

Docker Engine

MyS

QL D

ata Image

Contain er M

ySQ

L Dat a

BackupServer

2.Get DB Backup

WordpressDockerfile4.Build

RepositoryServer

5.Get Wordpress Code

Wordpr ess Im

a geW

ordpr ess Ima ge

6.PushW

ordpr ess Ima ge

Contain er W

or dpress

Page 25: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Build MySQLFROM ubuntu-vimENV DEBIAN_FRONTEND noninteractiveRUN echo 'mysql-server mysql-server/root_password password test1234' | debconf-set-selectionsRUN echo 'mysql-server mysql-server/root_password_again password test1234' | debconf-set-selectionsRUN apt-get install -y mysql-server wgetRUN wget http://10.1.3.227:8000/wptest.sqlRUN sed -i 's/bind-address/#bind-address/g' /etc/mysql/my.cnfRUN service mysql start && \ mysql -u root -ptest1234 -e "CREATE DATABASE wptest CHARACTER SET utf8 COLLATE utf8_general_ci;" && \ mysql -u root -ptest1234 -e "GRANT ALL PRIVILEGES ON wptest.* TO wptest@'%' IDENTIFIED BY 'wptest' WITH GRANT OPTION;" mysql -u root -ptest1234 wptest < wptest.sql && \ service mysql stopCMD /usr/bin/mysqld_safeEXPOSE 3306

Page 26: Docker Continuous Delivery Workshop

Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop

October 11, 2014 @ OSS Festival 2014

Build ApacheFROM ubuntu-vimENV DEBIAN_FRONTEND noninteractiveRUN apt-get install -y libapache2-mod-php5 php5 php5-mysql php5-curlADD wordpress /var/www/wordpressADD default /etc/apache2/sites-available/000-default.confRUN a2enmod rewriteRUN chown -R www-data:www-data /var/wwwCMD apachectl -DFOREGROUNDEXPOSE 80


Recommended