Skip to content

🎒 Containers Training: Hands-on introduction to Docker and CI/CD

License

Notifications You must be signed in to change notification settings

ArtiomL/hello-world

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

153 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

  hello, world

Build Status Docker Hub

  

Table of Contents

  

Description

Containers Training: Hands-on introduction to Docker and CI/CD.

  

Documentation

Start here and there.

Awesome images for security and Ansible.

  

Prerequisites

  • A 64-bit Debian / Ubuntu VM with Internet access (tested with Debian Stretch v9.3)
  • Version 3.10 or higher of the Linux kernel
  • Install the following tools: git, curl, vim (sudo apt-get update && sudo apt-get install -y curl git vim)
  • Take a snapshot of the virtual machine
  • GitHub account: https://github.com/join
  • Travis CI account: https://travis-ci.org (sign in with GitHub)
  • Docker Hub account: https://hub.docker.com
  • Heroku account: https://signup.heroku.com

  

Lab

Replace artioml with your GitHub and Docker Hub username (where applicable) after forking.

monolith

# Install Node.js
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
git clone https://github.com/ArtiomL/hello-world.git
cd hello-world
# Install dependencies
npm install
# Run
node index.js &
# Test and crash the app
curl http://127.0.0.1:8080/app
curl http://127.0.0.1:8080/kill
curl http://127.0.0.1:8080/app
# Restore snapshot

 

usermod

# Install Docker CE
curl -fsSL https://get.docker.com | sh
# Manage Docker as a non-root user
sudo usermod -aG docker $USER
# Log out and log back in so that your group membership is re-evaluated

 

build

git clone https://github.com/ArtiomL/hello-world.git
cd hello-world
# Build an image from a Dockerfile
docker build -t hello-world .
# List images
docker images

 

pull

# Pull an image or a repository from a registry (won't work with your own username, yet)
docker pull artioml/hello-world

 

run

docker run -dit -p 80:8080 artioml/hello-world
# List running containers
docker ps
# Display listening server sockets (note docker-proxy)
sudo netstat -lnp | grep ':::80'
# Test and crash the app
curl http://127.0.0.1/app
curl http://127.0.0.1/kill
curl http://127.0.0.1/app
# Run again and assign a name
docker run -dit -p 80:8080 --name dhw artioml/hello-world

 

logs

# Fetch the logs of a container (follow output)
docker logs -f dhw

 

exec

# Run a command (as root) in a running container
docker exec -it -u 0 dhw /bin/sh
# Update the app
sed -i 's/Node.js app/Node.js app v2.0/' index.js
exit

 

diff

# Inspect changes to files or directories on a container's filesystem
docker diff dhw

 

commit

# Create a new image from a container's changes
docker commit dhw artioml/hello-world:2.0

 

push

docker images
# Log in to a Docker registry
docker login -u <user> -p <password>
# Push an image to a registry
docker push artioml/hello-world:2.0

 

rm

# Remove a container
docker rm -f dhw
# Run (new version) and restart if the container exits with a non-zero exit status
docker run -dit -p 80:8080 --name dhw --restart on-failure artioml/hello-world:2.0
# Test and crash the app
curl http://127.0.0.1/app
curl http://127.0.0.1/kill
docker ps
curl http://127.0.0.1/app
docker logs -f dhw

 

top

# Display the running processes of a container (note UID)
docker top dhw

 

stats

# Display a live stream of container(s) resource usage statistics
docker stats dhw

 

kill

# Kill one or more running containers
docker kill dhw

 

-P, --publish-all

# Publish all exposed ports to random ports (multiple instances)
for i in {1..3}; do
	docker run -ditP artioml/hello-world:2.0
done
# List running containers and examine the ports
docker ps
# Display listening server sockets (note docker-proxy)
sudo netstat -lnp | grep ':::32'

  

Next

About

🎒 Containers Training: Hands-on introduction to Docker and CI/CD

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors