Workshop
Jirayut Nimsaeng (Dear)
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
#whoami
● Jirayut Nimsaeng (Dear)
● The Builder at
● Interested in Cloud and
Open Source Technology
● Agile Practitioner and
ScrumMaster with
DevOps Driven Development
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Developer Problems
Developer Local Test QA
Production
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
What Developer needs
Production-like Quick Repeatable
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker can solve this problem
Developer Local Test QA
Production
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker can
● Deploy (almost) everything
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker can
● Deploy (almost) everywhere
Native On VMs
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
What is Docker?
● Service Platform to help code, test and deploy
applications
● Combine with
– Lightweight container virtualization
– Work flows
– Tooling
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker Containers as a Service Platform
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Containers vs. VMs
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker image
● Docker images are read-only templates
● Each image consists of series of layers
● Docker use union file system to combine layers
into single image
● Every image starts from base image
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker image layers
http://merrigrove.blogspot.com/2015/10/visualizing-docker-containers-and-images.html
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker container
● A container is defined as a "union view" of a stack
of layers the top of which is a read-write layer.
http://merrigrove.blogspot.com/2015/10/visualizing-docker-containers-and-images.html
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Image vs Container
Docker Image is a class
Docker Container is a instance of class
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Image vs Container
http://merrigrove.blogspot.com/2015/10/visualizing-docker-containers-and-images.html
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Running Container
http://merrigrove.blogspot.com/2015/10/visualizing-docker-containers-and-images.html
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Dockerfile
● Dockerfile is instructions to build Docker image
– How to run commands
– Add files or directories
– Create environment variables
– What process to run when launching container
● Result from building Dockerfile is Docker image
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Sample Dockerfile
FROM ubuntu:14.04
MAINTAINER Jirayut Nimsaeng <w [at] winginfotech.net>
ADD build-files /build-files
RUN apt-get update
RUN apt-get install -y openssh-server vim tmux rsync byobu
RUN mkdir /var/run/sshd
RUN sed -i 's/required pam_loginuid.so/optional
pam_loginuid.so/g' /etc/pam.d/sshd
CMD /start.sh
EXPOSE 22
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker Registry
● Docker Registry is the store for Docker image
● Docker Hub is public Docker Registry like Github
● Using Docker client to push and pull Docker image
from Docker Registry
● You can create your own Docker Registry with
Docker Distribution
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker Hub
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker workflows
Dockerfile
For App A
Host 1 (Dev/Build Server)
Docker Engine
ImageAppAImageAppA
Docker
Registry
Host 2 (Container Server)
1.Build
2.Push
3.Pull
4.Run
Docker Engine
ImageAppA
ContainerAppAProduction
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker Installation
● Docker Toolbox for Mac and Windows
– https://www.docker.com/toolbox
– All-in-one Docker installation
● Docker Engine
● Docker Machine
● Docker Compose
● Docker Kitematic
● VirtualBox
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker installation
● Ubuntu based
– https://docs.docker.com/installation/ubuntulinux/
– Recommend Ubuntu 14.04 64-bit LTS or up
– curl -sSL https://get.docker.com/ | sudo sh
● Redhat based
– https://docs.docker.com/installation/centos/
– Recommend CentOS 7
– curl -sSL https://get.docker.com/ | sh
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker architecture
Host
Docker Engine
Web Server
80 xxxx
Docker Containers
Database
Docker Client
socket
3306
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Boot2docker architecture
Host
Virtualbox VM
Docker Engine
Web Server
boot2docker-vm
80 1024+
Docker Containers
Database
2376
Host-only
80
80
3306
Docker Client
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Know the tools (1)
● Docker Client / Engine
Host
Virtualbox VM
Docker Engine
Web Server
boot2docker-vm
80 1024+
Docker Containers
Database
2376
Host-only
80
80
3306
Docker Client
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Know the tools (2)
● Docker Machine
– Lets you create Docker hosts on your computer, on
cloud providers, or inside your own data center
– Automated these steps
● Create Docker host
● Install Docker
● Configure Docker client to talk with server
– Manage Docker multiple Docker host
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Know the tools (3)
● VirtualBox
– Virtualization software to run Docker host
for Mac and Windows
– VM has been configured and managed
by Docker Machine
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Know the tools (4)
● Docker Kitematic
– Simple application for managing Docker containers on
Mac and Windows
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Know the tools (5)
● Docker Compose
– Tool for defining and running multi-container
applications with Docker in a single file
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker Image name
● Official Docker Image
– ubuntu:latest
– centos:centos7
● User's Docker Image on Docker Hub
– google/cadvisor:0.5.0
– dockerfile/mongodb
● Docker Image on Private Docker Registry
– r.winginfotech.net/ubuntu:14.10
– r:5000/docker-registry
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Run first Docker container
● docker images
● docker pull r.winginfotech.net/ubuntu
● docker images
● docker run r.winginfotech.net/ubuntu echo “Hello World”
●
docker run -i -t r.winginfotech.net/ubuntu bash
– whoami
– hostname
– cat /etc/*release*
– exit
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker basic operations
● docker pull [name[:tag]]
– docker pull r.winginfotech.net/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]
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Image name and tag
● docker pull r.winginfotech.net/ubuntu
● docker images
● docker pull r.winginfotech.net/ubuntu:15.10
● docker images
● docker pull r.winginfotech.net/ubuntu:14.04
● docker images
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Create your first image
●
docker run -it r.winginfotech.net/ubuntu bash
– vim
– echo 'Acquire::http::Proxy "http://r.winginfotech.net:3142";' >
/etc/apt/apt.conf.d/11proxy
– apt-get update
– apt-get install -y vim
– touch vim-installed
– ls
– exit
● docker ps -a
● docker commit [cid] ubuntu-vim
● docker images
● docker run -it ubuntu-vim bash
– ls
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker commit
● Commit takes a container's top-level read-write
layer and burns it into a read-only layer.
● This turns a container into an immutable image.
http://merrigrove.blogspot.com/2015/10/visualizing-docker-containers-and-images.html
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Expose ports
● docker run -it -p 80:80 ubuntu-vim bash
– apt-get install -y apache2
– service apache2 start
– Go to browser: http://ipaddress
– exit
● Commit your apache2 container as
ubuntu-apache2 with tag 14.04 and latest
● Make sure that new images have apache2
● Clear your stopped containers
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
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
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
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]
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Some useful command & parameter
● docker run --name my-nginx -d -p 80:80 r.winginfotech.net/nginx
● docker ps
● docker exec -it my-nginx /bin/bash
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Linking
Host
Web Server
80
80
Docker Containers
Database
3306
3306
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Linking
Host
Web Server
80
80
Docker Containers
Database
Linking
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Running Wordpress without linking
● docker run -d –-name wp_mysql -p 3306:3306 
-e MYSQL_ROOT_PASSWORD=mypass 
r.winginfotech.net/mysql
● docker run -d –-name wp -p 80:80 
-e WORDPRESS_DB_PASSWORD=mypass 
-e WORDPRESS_DB_HOST=your-ip-address:3306 
r.winginfotech.net/wordpress
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Running Wordpress with linking
● docker run -d –-name wp_mysql 
-e MYSQL_ROOT_PASSWORD=mypass 
r.winginfotech.net/mysql
● docker run -d –-name wp -p 80:80 
-e WORDPRESS_DB_PASSWORD=mypass 
--link wp_mysql:mysql 
r.winginfotech.net/wordpress
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Data in Container (1)
● Default
https://kvaes.wordpress.com/2016/02/11/docker-storage-patterns-for-persistence/
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Data in Container (2)
● Data Volume
https://kvaes.wordpress.com/2016/02/11/docker-storage-patterns-for-persistence/
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Data in Container (3)
● Data Only Container
https://kvaes.wordpress.com/2016/02/11/docker-storage-patterns-for-persistence/
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Data in Container (4)
● Host Mapped Volume
https://kvaes.wordpress.com/2016/02/11/docker-storage-patterns-for-persistence/
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Running Wordpress with volume
● docker run -d –-name wp_mysql 
-e MYSQL_ROOT_PASSWORD=mypass 
r.winginfotech.net/mysql
● docker run -d –-name wp -p 80:80 
-e WORDPRESS_DB_PASSWORD=mypass 
--link wp_mysql:mysql 
--volumes $(pwd)/uploads:/var/www/html/wp-content/uploads 
r.winginfotech.net/wordpress
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker Compose
●
Create docker-compose.yml file
wordpress:
image: r.winginfotech.net/wordpress
ports:
- "80:80"
links:
- db:mysql
db:
image: r.winginfotech.net/mysql
environment:
MYSQL_ROOT_PASSWORD: mypass
●
docker-compose up
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Play with Docker Compose
● docker-compose up
● docker-compose start
● docker-compose ps
● docker-compose stop
● docker-compose up -d
● docker-compose rm
● docker-compose down
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Simple Voting Application
https://github.com/docker/docker-birthday-3/
Jirayut Nimsaeng
Docker Workshop for beginner
March 20, 2016 @ Odd-e Thailand
Docker build
● Docker build is iteratively runs multiple commands
at once.
http://merrigrove.blogspot.com/2015/10/visualizing-docker-containers-and-images.html

Docker Workshop Birthday #3

  • 1.
    Workshop Jirayut Nimsaeng (Dear) DockerWorkshop for beginner March 20, 2016 @ Odd-e Thailand
  • 2.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand #whoami ● Jirayut Nimsaeng (Dear) ● The Builder at ● Interested in Cloud and Open Source Technology ● Agile Practitioner and ScrumMaster with DevOps Driven Development
  • 3.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Developer Problems Developer Local Test QA Production
  • 4.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand What Developer needs Production-like Quick Repeatable
  • 5.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker can solve this problem Developer Local Test QA Production
  • 6.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker can ● Deploy (almost) everything
  • 7.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker can ● Deploy (almost) everywhere Native On VMs
  • 8.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand What is Docker? ● Service Platform to help code, test and deploy applications ● Combine with – Lightweight container virtualization – Work flows – Tooling
  • 9.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker Containers as a Service Platform
  • 10.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Containers vs. VMs
  • 11.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker image ● Docker images are read-only templates ● Each image consists of series of layers ● Docker use union file system to combine layers into single image ● Every image starts from base image
  • 12.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker image layers http://merrigrove.blogspot.com/2015/10/visualizing-docker-containers-and-images.html
  • 13.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker container ● A container is defined as a "union view" of a stack of layers the top of which is a read-write layer. http://merrigrove.blogspot.com/2015/10/visualizing-docker-containers-and-images.html
  • 14.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Image vs Container Docker Image is a class Docker Container is a instance of class
  • 15.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Image vs Container http://merrigrove.blogspot.com/2015/10/visualizing-docker-containers-and-images.html
  • 16.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Running Container http://merrigrove.blogspot.com/2015/10/visualizing-docker-containers-and-images.html
  • 17.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Dockerfile ● Dockerfile is instructions to build Docker image – How to run commands – Add files or directories – Create environment variables – What process to run when launching container ● Result from building Dockerfile is Docker image
  • 18.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Sample Dockerfile FROM ubuntu:14.04 MAINTAINER Jirayut Nimsaeng <w [at] winginfotech.net> ADD build-files /build-files RUN apt-get update RUN apt-get install -y openssh-server vim tmux rsync byobu RUN mkdir /var/run/sshd RUN sed -i 's/required pam_loginuid.so/optional pam_loginuid.so/g' /etc/pam.d/sshd CMD /start.sh EXPOSE 22
  • 19.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker Registry ● Docker Registry is the store for Docker image ● Docker Hub is public Docker Registry like Github ● Using Docker client to push and pull Docker image from Docker Registry ● You can create your own Docker Registry with Docker Distribution
  • 20.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker Hub
  • 21.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker workflows Dockerfile For App A Host 1 (Dev/Build Server) Docker Engine ImageAppAImageAppA Docker Registry Host 2 (Container Server) 1.Build 2.Push 3.Pull 4.Run Docker Engine ImageAppA ContainerAppAProduction
  • 22.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker Installation ● Docker Toolbox for Mac and Windows – https://www.docker.com/toolbox – All-in-one Docker installation ● Docker Engine ● Docker Machine ● Docker Compose ● Docker Kitematic ● VirtualBox
  • 23.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker installation ● Ubuntu based – https://docs.docker.com/installation/ubuntulinux/ – Recommend Ubuntu 14.04 64-bit LTS or up – curl -sSL https://get.docker.com/ | sudo sh ● Redhat based – https://docs.docker.com/installation/centos/ – Recommend CentOS 7 – curl -sSL https://get.docker.com/ | sh
  • 24.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker architecture Host Docker Engine Web Server 80 xxxx Docker Containers Database Docker Client socket 3306
  • 25.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Boot2docker architecture Host Virtualbox VM Docker Engine Web Server boot2docker-vm 80 1024+ Docker Containers Database 2376 Host-only 80 80 3306 Docker Client
  • 26.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Know the tools (1) ● Docker Client / Engine Host Virtualbox VM Docker Engine Web Server boot2docker-vm 80 1024+ Docker Containers Database 2376 Host-only 80 80 3306 Docker Client
  • 27.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Know the tools (2) ● Docker Machine – Lets you create Docker hosts on your computer, on cloud providers, or inside your own data center – Automated these steps ● Create Docker host ● Install Docker ● Configure Docker client to talk with server – Manage Docker multiple Docker host
  • 28.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Know the tools (3) ● VirtualBox – Virtualization software to run Docker host for Mac and Windows – VM has been configured and managed by Docker Machine
  • 29.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Know the tools (4) ● Docker Kitematic – Simple application for managing Docker containers on Mac and Windows
  • 30.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Know the tools (5) ● Docker Compose – Tool for defining and running multi-container applications with Docker in a single file
  • 31.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker Image name ● Official Docker Image – ubuntu:latest – centos:centos7 ● User's Docker Image on Docker Hub – google/cadvisor:0.5.0 – dockerfile/mongodb ● Docker Image on Private Docker Registry – r.winginfotech.net/ubuntu:14.10 – r:5000/docker-registry
  • 32.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Run first Docker container ● docker images ● docker pull r.winginfotech.net/ubuntu ● docker images ● docker run r.winginfotech.net/ubuntu echo “Hello World” ● docker run -i -t r.winginfotech.net/ubuntu bash – whoami – hostname – cat /etc/*release* – exit
  • 33.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker basic operations ● docker pull [name[:tag]] – docker pull r.winginfotech.net/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]
  • 34.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Image name and tag ● docker pull r.winginfotech.net/ubuntu ● docker images ● docker pull r.winginfotech.net/ubuntu:15.10 ● docker images ● docker pull r.winginfotech.net/ubuntu:14.04 ● docker images
  • 35.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Create your first image ● docker run -it r.winginfotech.net/ubuntu bash – vim – echo 'Acquire::http::Proxy "http://r.winginfotech.net:3142";' > /etc/apt/apt.conf.d/11proxy – apt-get update – apt-get install -y vim – touch vim-installed – ls – exit ● docker ps -a ● docker commit [cid] ubuntu-vim ● docker images ● docker run -it ubuntu-vim bash – ls
  • 36.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker commit ● Commit takes a container's top-level read-write layer and burns it into a read-only layer. ● This turns a container into an immutable image. http://merrigrove.blogspot.com/2015/10/visualizing-docker-containers-and-images.html
  • 37.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Expose ports ● docker run -it -p 80:80 ubuntu-vim bash – apt-get install -y apache2 – service apache2 start – Go to browser: http://ipaddress – exit ● Commit your apache2 container as ubuntu-apache2 with tag 14.04 and latest ● Make sure that new images have apache2 ● Clear your stopped containers
  • 38.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand 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
  • 39.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand 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]
  • 40.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Some useful command & parameter ● docker run --name my-nginx -d -p 80:80 r.winginfotech.net/nginx ● docker ps ● docker exec -it my-nginx /bin/bash
  • 41.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Linking Host Web Server 80 80 Docker Containers Database 3306 3306
  • 42.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Linking Host Web Server 80 80 Docker Containers Database Linking
  • 43.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Running Wordpress without linking ● docker run -d –-name wp_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mypass r.winginfotech.net/mysql ● docker run -d –-name wp -p 80:80 -e WORDPRESS_DB_PASSWORD=mypass -e WORDPRESS_DB_HOST=your-ip-address:3306 r.winginfotech.net/wordpress
  • 44.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Running Wordpress with linking ● docker run -d –-name wp_mysql -e MYSQL_ROOT_PASSWORD=mypass r.winginfotech.net/mysql ● docker run -d –-name wp -p 80:80 -e WORDPRESS_DB_PASSWORD=mypass --link wp_mysql:mysql r.winginfotech.net/wordpress
  • 45.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Data in Container (1) ● Default https://kvaes.wordpress.com/2016/02/11/docker-storage-patterns-for-persistence/
  • 46.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Data in Container (2) ● Data Volume https://kvaes.wordpress.com/2016/02/11/docker-storage-patterns-for-persistence/
  • 47.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Data in Container (3) ● Data Only Container https://kvaes.wordpress.com/2016/02/11/docker-storage-patterns-for-persistence/
  • 48.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Data in Container (4) ● Host Mapped Volume https://kvaes.wordpress.com/2016/02/11/docker-storage-patterns-for-persistence/
  • 49.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Running Wordpress with volume ● docker run -d –-name wp_mysql -e MYSQL_ROOT_PASSWORD=mypass r.winginfotech.net/mysql ● docker run -d –-name wp -p 80:80 -e WORDPRESS_DB_PASSWORD=mypass --link wp_mysql:mysql --volumes $(pwd)/uploads:/var/www/html/wp-content/uploads r.winginfotech.net/wordpress
  • 50.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker Compose ● Create docker-compose.yml file wordpress: image: r.winginfotech.net/wordpress ports: - "80:80" links: - db:mysql db: image: r.winginfotech.net/mysql environment: MYSQL_ROOT_PASSWORD: mypass ● docker-compose up
  • 51.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Play with Docker Compose ● docker-compose up ● docker-compose start ● docker-compose ps ● docker-compose stop ● docker-compose up -d ● docker-compose rm ● docker-compose down
  • 52.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Simple Voting Application https://github.com/docker/docker-birthday-3/
  • 53.
    Jirayut Nimsaeng Docker Workshopfor beginner March 20, 2016 @ Odd-e Thailand Docker build ● Docker build is iteratively runs multiple commands at once. http://merrigrove.blogspot.com/2015/10/visualizing-docker-containers-and-images.html