- URL: https://app.pluralsight.com/library/courses/docker-getting-started/discussion
- Working Directory: Documents/Courses/Pluralsight-GettingStartedWithDocker
Module 3 - Installing Docker
Follow docker install from docker.com
Module 4 - Working with Containers
docker info -shows details of the docker server
docker ps - list our running containers
docker ps -a - list all containers, even those that have recently exited
docker images - list all the currently downloaded images
Containers and images
- images are stopped containers
- containers are running images
docker pull ubuntu - download latest ubuntu image & store locally
docker pull ubuntu:14.04 - downlaod the 14.4 version
docker rmi ubuntu:14.04 - remove an image
docker start <container> - start a container
docker stop <container> - stop a container
docker rmi <container> - delete a container
Lifecycle of a container
Containers are great for non persistent workloads. They can handle workloads with persistence as well.
docker run -d --name web -p 80:8080 nigelpoulton/pluralsight-docker-ci
- run a container
- -d- detached/daemon mode
- --name- a unique name for the container
- -p 80:8080- map port 80 on the docker server to port 8080 in the container.
- list the image to run
docker stop web - stop our container
docker start web - start our container
docker run -it --name temp ubuntu:latest /bin/bash
- -it- interactive & terminal
- run /bin/bash
Cntrl-P+Q - while in a running container to exist without stopping the container. If it’s something like a single process bash container.
docker ps -aq - list all docker processes & show only the dockerID, good to use with other commands to perform actions on sets of servers
docker stop $(docker ps -aq) - stop all containers
docker rm $(docker ps -qa) - rm all containers
Module 5 - Swarm Mode and Microservices
- Swarm is a group of docker engines in a cluster
- Multiple managers for H/A
- worker nodes execute tasks
- Services
    - delarative way of running & scaling tasks
- we declare how many we want & docker makes sure it keeps that number running
 
- Tasks
    - Assigned to workers
        - containers (could be other things in future)
 
 
- Assigned to workers
        
Building a Swarm
- 3 managers
- 3 workers
Create a swarm
docker swarm init - start up a swarm
docker swarm join-token manager - get the token to join another manager
docker swarm join-token worker - get the token to join another worker
docker info - will give details on swarm config
A manager is also a worker node
docker node ls - can only be run from a manager. will list the nodes of a swarm
docker node promote <ID> - promote a worker to a manager
Services
- simplifying large scale deployments
- declarative
    - desired state <-> actual state
 
docker service create --name psight1 -p 8080:8080 --replicas 5 nigelpoulton/pluralsight-docker-ci - deploy a new service using port 8080 in the container & exposed. Create 5 tasks/replicas
docker service ls - list out the services, high level
docker service ps psight1 - show processes for the service, details of where the task is running
docker service inspect psight1 - shows all the config of the service
The swarm members are load balanced by docker via the routing mesh.
Desired State Scaling
docker service scale psight1=7 - scale our service up to 7 tasks
docker service update --replicas 10 psight - same as docker service scale psight=10
Adding a new node/worker doesn’t automatically scale existing tasks across the new node.
Rolling Updates
docker network create -d overlay ps-net - create an overlay network
docker network ls - list networks
docker service inspect -pretty psight2 - show the service info
Stacks & Distributed Application Bundles (DAB)
- Stack - application comprising multiple services
    - deployed from distributed application bundles (DAB)
 
config for a stack is in docker-compose.yaml file.
docker-compose bundle - will build a docker-compose.yaml into a DAB
docker stack tasks <appname> - list all the tasks for a service
docker stack rm <appname> - delete the stack app
Modeul 6 - What’s Next!
- Related courses
    - Docker Deep Dive - Nigel Poulton
- Docker with DevOps Automated Workflows - Nigel Poulton
- Docker for Web Developers - Dan Wahlin
- CD using Docker and Ansible - Justin Menga
 
- DockerCon