Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

istlabs/docker-tutorial-devops

Repository files navigation

docker-tutorial-devops

Learn Docker and Devops from Udemy course. Docker Technologies for DevOps and Developers

Docker Technologies for DevOps and Developers
https://www.udemy.com/docker-tutorial-for-devops-run-docker-containers

  1. Docker
  2. DevOps
  3. Docker Compose
  4. Docker Swarm
  5. Docker Machine
  6. DockerHub
  7. CirclCI
  8. DigitalOcean

Show docker images list

 > docker images

Login DockerHub

 > docker login

docker run

 > docker run busybox:1.24 echo "hello world"
 > docker run busybox:1.24 ls /
 > docker run -it busybox:1.24 (interactive mode)
 > docker run -d busybox:1.24 sleep 1000 (docker run in background mode)
 > docker run --rm busybox:1.24 sleep 1 (remove when finish run)
 > docker run --name hello_world busybox:1.24 (define name for container)

docker inspect

 > docker inspect <container id>

docker inspect

 > docker inspect <container id>

docker logs

 > docker run -it -d -p 8888:8080 tomcat:8.0 (-p host_port : container_port)
 > docker logs <container id>

docker image layer history

 > docker history busybox:1.24
 >
 > docker run -it debian:jessie
 > apt-get update && apt-get install -y git (install git in container)
 > exit
 > docker history debian:jessie

docker commit to create image

 > docker container ls -a
 > docker commit <container id> smalltides/debian:1.0 (commit a new image from container id)
 > docker images
 > docker history smalltides/debian:1.0
 > docker run -it smalltides/debian:1.0

Docker file to create image

 > docker build -t smalltides/debian .
 > docker images
 > docker history smalltides/debian:latest
 > docker build -t smalltides/debian:latest . --no-cache=true (no cache mode)

push docker image to docker hub

 > docker login (must login docker hub)
 > docker tag <image id> smalltides/debian:1.01
 > docker push smalltides/debian:1.01

use Dcokerfile to create a containerize python app

 > docker build -t dockerapp:0.1 .
 > docker run -d -p 5000:5000 <image id>
 > docker exec -it <container id> bash
 > ps aux

use Dcokerfile to create a containerize python app

 > git clone -b v0.1 git@github.com:smalltide/dockerapp.git dockerapp
 > cd dockerapp
 > docker build -t dockerapp:v0.1 .
 > docker run -d -p 5000:5000 dockerapp:v0.1
 > docker exec -it <container id> bash
 > ps aux

use docker --link to link a two container(flask and redis) app

 > git clone -b v0.3 git@github.com:smalltide/dockerapp.git dockerapp0.3
 > cd dockerapp0.3
 > docker build -t dockerapp:v0.3 .
 > docker images
 > docker run -d --name redis redis:3.2.0
 > docker run -d -p 5000:5000 --link redis dockerapp:v0.3

use docker-compose create two container(flask and redis) app

 > docker-compose version 
 > cd dockerapp0.3
 > docker-compose up
 > docker-compose up -d (run in background)
 > docker-compose ps
 > docker-compose logs -f (monitor log) 
 > docker-compose logs <app_name>
 > docker-compose stop
 > docker-compose rm
 > docker-compose build (force rebuild)

four types docker network

 > (None Network, support one host network)
 > docker network ls
 > docker run -d --net none busybox sleep 1000 (none network)
 > docker exec -it <container id> /bin/ash
 > ping 8.8.8.8 (no reach, only loopback network)
 >
 > (Bridge Network, support one host network)
 > docker network ls
 > docker network inspect bridge
 > docker run -d --name c_1 busybox sleep 1000 (default bridge network)
 > docker exec -it c_1 ifconfig (two network interface)
 > docker run -d --name c_2 busybox sleep 1000 (default bridge network)
 > docker exec -it c_2 ifconfig (two network interface)
 > docker exec -it c_1 ping 172.17.0.3 (c_1 ping c_2)
 > docker network create --driver bridge my_bridge
 > docker network inspect my_bridge
 > docker run -d --name c_3 --net my_bridge busybox sleep 1000 (use my_bridge network)
 > docker exec -it c_3 ifconfig (c3 ip in my_bridge network)
 > docker exec -it c_3 ping 172.17.0.2 (c_3 ping c_1, no reach)
 > docker network connect bridge c_3 (connect c_3 and default bridge network)
 > docker exec -it c_3 ifconfig (c3 ip in bridge and my_bridge network)
 > docker exec -it c_3 ping 172.17.0.3 (my_bridge c_3 can ping bridge c_2)
 > docker network disconnect bridge c_3 (disconnect c_3 and default bridge network)
 >
 > (Host Network, support one host network)
 > docker run -d --name c_4 --net host busybox sleep 1000
 > docker exec -it c_4 ifconfig (c4 run on host machine network)
 >
 > (Overlay Network, support multi-host network)
 > need Running Docker engine in Swarm mode
 > need A key-value store such as consul
 > most use on production mode

define container netwokr with docker-compose

 > git clone -b v0.4 git@github.com:smalltide/dockerapp.git dockerapp0.4
 > cd dockerapp0.4
 > docker-compose up -d
 > docker network ls (dockerapp0.4 app run on dockerapp04_my_net)

alt text

Write and Run Unit Tests inside Containers

 > git clone -b v0.5 git@github.com:smalltide/dockerapp.git dockerapp0.5
 > cd dockerapp0.5
 > docker-compose up -d
 > docker-compose run dockerapp python test.py

Introduction to Continuous Integration(Github and CircleCI)

 > ssh-keygen -t rsa -b 4096 -C "your_email@example.com" (genrate ssh key)
 > cat ~/.ssh/id_rsa.pub

alt text

use docker machine to create vm using digitalocean driver and deploy app

 > docker-machine create --driver digitalocean --digitalocean-access-token <DigitalOcean API ACCESS TOKEN> dockerapp-vm
 > docker-machine ls
 > docker-machine env dockerapp-vm
 > eval $(docker-machine env dockerapp-vm) 
 > docker info (now see docker client connect to digitalocean)
 > cp docker-compose.yml prod.yml
 > revise "build: ." to "image: smalltides/dockerapp' in rod.yml
 > docker-compose -f prod.yml up -d

Introduction to Docker Swarm and Service Discovery

 > export DIGITALOCEAN_ACCESS_TOKEN=<DigitalOcean API ACCESS TOKEN>
 > export DIGITALOCEAN_PRIVATE_NETWORKING=true
 > export DIGITALOCEAN_IMAGE=debian-8-x64
 > docker-machine create -d digitalocean consul
 > docker-machine ssh consul ifconfig
 > docker-machine env consul
 > ping -c 1 $(docker-machine ssh consul 'ifconfig eth0 | grep "inet addr:" | cut -d: -f2 | cut -d" " -f1') 
 > reach
 > ping -c 1 $(docker-machine ssh consul 'ifconfig eth1 | grep "inet addr:" | cut -d: -f2 | cut -d" " -f1')
 > no reach
 > export KV_IP=$(docker-machine ssh consul 'ifconfig eth1 | grep "inet addr:" | cut -d: -f2 | cut -d" " -f1')
 > eval $(docker-machine env consul)
 > docker run -d -p ${KV_IP}:8500:8500 --restart always gliderlabs/consul-server -bootstrap

alt text alt text

Deploy Docker Application to the Cloud with Docker Swarm

 > docker-machine create -d digitalocean --swarm \
 --swarm-master \
 --swarm-discovery="consul://${KV_IP}:8500" \
 --engine-opt="cluster-store=consul://${KV_IP}:8500" \
 --engine-opt="cluster-advertise=eth1:2376" \
 master (create swarm master node)
 >
 > docker-machine create \
 -d digitalocean \
 --swarm \
 --swarm-discovery="consul://${KV_IP}:8500" \
 --engine-opt="cluster-store=consul://${KV_IP}:8500" \
 --engine-opt="cluster-advertise=eth1:2376" \
 slave (create swarm slave node)
 >
 > eval $(docker-machine env -swarm master)
 > docker info (see 2 docker swarm cluster node)
 > docker-compose -f prod.yml up -d (run in master node, deploy to swarm cluster)
 > docker network ls
 > docker container ls

CircleCI with Automation CD and AWS, GCP and Kubernetes

 > Continuous deployment Docker, AWS and circle-ci
 > https://medium.com/soosap/continuous-deployment-w-docker-aws-and-circle-ci-82f4b14256cc
 >
 > CircleCI can deploy Google Compute Engine and Kubernetes
 > https://circleci.com/docs/1.0/docker/#google-compute-engine-and-kubernetes

About

Learn Docker and Devops from Udemy course. Docker Technologies for DevOps and Developers

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 66.0%
  • HTML 22.8%
  • Dockerfile 11.2%

AltStyle によって変換されたページ (->オリジナル) /