Skip to content

Instantly share code, notes, and snippets.

@ryanpadilha
Last active December 21, 2017 13:34
Show Gist options
  • Save ryanpadilha/f0a85c3370e7333fb8aa5311aae84dad to your computer and use it in GitHub Desktop.
Save ryanpadilha/f0a85c3370e7333fb8aa5311aae84dad to your computer and use it in GitHub Desktop.
Docker - operate container on Linux environment
#!/bin/bash
#
# Installation of Docker Environment
# For Ubuntu 16.04
# https://www.digitalocean.com/community/tutorials/como-instalar-e-usar-o-docker-no-ubuntu-16-04-pt
# adicional packages
sudo apt-get update
sudo apt-get install build-essential python-software-properties git
# docker auto-install
curl -sSL https://get.docker.com/ | sh
# docker official repo
sudo sh -c "wget -qO- https://get.docker.io/gpg | apt-key add -"
sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\ > /etc/apt/sources.list.d/docker.list"
sudo apt-get update
sudo apt-get install lxc-docker
# docker configuration file
# /etc/default/docker
# start docker (network interface problems)
# sudo docker daemon -s overlay
# test docker installation
# sudo docker run ubuntu /bin/echo Hello, Ryan!
# containers execution list
# docker ps
# create a container and access the shell
# -i : interact, -t : terminal access
# sudo docker run -i -t ubuntu /bin/bash
# verify release
# cat /etc/lsb-release
# verify release CentOS
# cat /etc/centos-release
# cat /etc/os-release
# machine details on runtine
# docker stats 6b4e5f3b04af
# list docker images
# docker images
# remove a container from list
# docker rm 4833f9f94944
# create container with name
# sudo docker run -it --name ex_nginx ubuntu
# save changes on container via docker commit
# docker commit 520d8ba08fb3 ubuntu/nginx
# auto-destruct container, with shell start nginx
# docker run -it -rm -p 8090:80 ubuntu/nginx /bin/bash
# docker run on background and start nginx service
# docker run -d -p 8090:80 ubuntu/nginx /usr/sbin/nginx -g "daemon off;"
# curl -IL http://localhost:8090
# stop container
# docker stop 123385304a85
# start container
# docker start docker stop 123385304a85
# remove container image
# docker rmi 3d16d956962d
# remove all container from machine
# docker rm $(docker ps -qa)
# remove all images from machine
# docker rmi $(docker images -q)
##
# Dockerfile - create a snapshot on build via shell script
##
# bootfs is an abstraction of lxc/libcontainer over kernel linux
# rootfs execuete over bootfs, is an read-only filesystem with all distro files for operate
# unionfs is a read-write abstract layer for docker operate programs and images
#
FROM ubuntu
MAINTAINER ryan.padilha
RUN apt-get update && apt-get install -y nginx
RUN ln -sf /dev/stdout /var/log/nginx/access.log
RUN ln -sf /dev/stderr /var/log/nginx/error.log
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
# CMD service nginx start
# build an image from Dockerfile
# sudo docker build -t nginx .
# inspect container, return json-context
# docker inspect bf4faa258b7f
# access bash on container
# docker exec -it bf4faa258b7f bash
# view logs
# docker logs bf4faa258b7f
# save container to move it
# docker save nginx_prod > /var/wplex/devops/nginx_prod.tar
# load container
# docker load < nginx_prod.tar
# volumes for mysql - /var/lib/mysql
# --volumes-from <ID> : volumes replication for containers
# docker rm -v volume_name : remove a docker volume
# containers communication
# remove a network interface (bridge)
# sudo ip link set dev docker0 down
# sudo brctl delbr docker0
# ping containers (A1 > B1)
# docker exec -it bf4faa258b7f ping 172.17.0.8
# link containers (same host) - --link <container_name>:<alias>
# docker run -d --name app --link postgres:db nginx
# link containers (different host) - TODO
# automate docker execution via composer
# docker-compose -f production.yml up -d
# create docker container with limitation of cpu, memory, i/o
# c 1024 (100% CPU)
# docker run -d -p 8080 -c 512 -m 1024m nginx
# dockerhub login
# docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS
# remove all stopped containers
# docker container prune
# docker network create --driver bridge network_name
# docker network ls
# (--network <name>)
#
# Docker Compose
# docker-compose build
# docker-compose up
#
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment