WORKSHOP
Rafael Dutra
WHO AM I?
WORKING WITH/AT
Vagrant, Puppet, Terraform, Continuous Integration, Continuous Deployment, Shell Scripting, Docker, AWS (learning) ...
Shared Services Ops Team
@crossover - https://crossover.com
@jivesoftware - https://jivesoftware.com
@aurea - https://www.aurea.com
AGENDA
WHAT'S DOCKER?
CONTAINER VS VIRTUAL MACHINES
WHY SHOULD I USE DOCKER?
TERMINOLOGY
IMAGES AND LAYERS
CONTAINERS AND LAYERS
DOCKERFILE
# base image
FROM nginx
# copy a file to a specific directory
COPY index.html /usr/share/nginx/html
# running the application
CMD ["nginx", "-g", "daemon off;"]
HANDS ON
HANDS ON AGENDA
DOCKER INSTALLATION
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
DOCKER BASICS
Full commands
docker
DOCKER BASICS
Need a medic? ask for help
docker <command> --help
DOCKER BASICS
Running our first container
docker run alpine hostname
DOCKER BASICS
Running our second container
docker run hello-world
DOCKER BASICS
Everything comes from an image
docker run alpine hostname
DOCKER BASICS
To list all images
docker image ls
DOCKER BASICS
To search an image
docker search alpine
DOCKER BASICS
To pull (download) an image
docker image pull ubuntu
DOCKER BASICS
To pull (download) an specific image version
docker image pull ubuntu:17.10
DOCKER BASICS
Running our first web container
docker run --detach --publish 45000:80 nginx
MANIPULATE CONTAINERS
To list running containers
docker container ls
MANIPULATE CONTAINERS
To list all containers
docker container ls -a
MANIPULATE CONTAINERS
Stopping a container
docker container stop <id>
MANIPULATE CONTAINERS
Starting a container
docker container start <id>
MANIPULATE CONTAINERS
Interacting with them
docker run --interactive --tty ubuntu /bin/bash
MANIPULATE CONTAINERS
Executing …. something without enter in a container
docker exec <id> <command>
MANIPULATE CONTAINERS
Attaching.�important: Containers needs some “bash/sh” running
docker attach <id>
MANIPULATE IMAGES
To remove an image
Important: Only containers removed
docker image rm alpine
CREATING IMAGES (Dockerfile)
FROM php:7.2.5-cli-alpine3.7
CMD ["php", "--version"]
CREATING IMAGES
docker build --tag fossday/php:7.2 .
RUN FORREST … RUN
docker run --rm fossday/php:7.2
RUN FORREST … RUN
docker run --rm fossday/php:7.2 --help
RUN FORREST … RUN WITH MATH
<?php
$val1 = 60;
$val2 = 20;
echo "Soma de ${val1} + ${val2} igual a: " . ($val1 + $val2) . "\n";
Lets create a file called: soma.php
RUN FORREST … RUN
docker run --rm \
-v $(pwd)/soma.php:/root/soma.php \
fossday/php:7.2 \
php -f /root/soma.php
CLEANING
Remove all containers that are in stopped state (dangling)
docker container prune
DOCKER COMPOSE
DOCKER COMPOSE INSTALLATION
https://goo.gl/8mbW87
DOCKER COMPOSE
docker-compose up -d
HERE WE GO
QUESTIONS ?
GET IN TOUCH
https://docker.rafaeldutra.me
https://linkedin.com/in/rafaeldutra
https://github.com/raffaeldutra
https://speakerdeck.com/raffaeldutra
SEE YOU LATER
THANK YOU