GithubHelp home page GithubHelp logo

smalltide / docker-tutorial-devops Goto Github PK

View Code? Open in Web Editor NEW
6.0 3.0 11.0 3.72 MB

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

Home Page: https://www.udemy.com/docker-tutorial-for-devops-run-docker-containers

Python 74.34% HTML 25.66%
docker devops docker-swarm docker-compose digitalocean docker-machine circleci dockerhub

docker-tutorial-devops's Introduction

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 [email protected]: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 [email protected]: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 [email protected]: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 [email protected]: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 "[email protected]" (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

docker-tutorial-devops's People

Contributors

smalltide avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.