Docker study and cheatsheet

fmchanprogrammingLeave a Comment

docker run -d -p 80:80 docker/getting-started
Unable to find image 'docker/getting-started:latest' locally
latest: Pulling from docker/getting-started

A project with Dockerfile 

# syntax=docker/dockerfile:1
FROM node:12-alpine
RUN apk add --no-cache python g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
docker build -t getting-started .

HELLO WORLD

 >docker run hello-world 
>docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
Digest: sha256:f7ca5a32c10d51aeda3b4d01c61c6061f497893d7f6628b92f822f7117182a57
Status: Image is up to date for busybox:latest
docker.io/library/busybox:latest
> docker images 
> docker run busybox echo "hello from busybox" 

Show containers (running/all)

> docker ps
> docker ps -a 
> docker run -it busybox sh 

remove all stopped containers

docker container prune 
docker run --rm prakhar1989/static-site 
docker run -d -P --name static-site prakhar1989/static-site
docker stop static-site

find which port is running

 docker port static-site 
 docker pull ubuntu:18.04 

First Image

$ git clone https://github.com/prakhar1989/docker-curriculum.git
$ cd docker-curriculum/flask-app 

Dockerfile

FROM python:3

# set a directory for the app
WORKDIR /usr/src/app

# copy all the files to the container
COPY . .

# install dependencies
RUN pip install --no-cache-dir -r requirements.txt

# define the port number the container should expose
EXPOSE 5000

# run the command
CMD ["python", "./app.py"]
docker build -t yourusername/catnip .
docker run -p 8888:5000 yourusername/catnip

run local as 127.0.0.1:8888

docker push yourusername/catnip
docker run -p 8888:5000 yourusername/catnip

run globally

SF Food Trucks

$ git clone https://github.com/prakhar1989/FoodTrucks
$ cd FoodTrucks

ElasticSearch

$ docker search elasticsearch
$ docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2
$ docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
$ docker container ls
$ docker container logs es
$ curl 127.0.0.1:9200
$ docker build -t fmchan/foodtrucks-web . 
$ docker run -P --rm fmchan/foodtrucks-web

Unable to connect to ES. Retying in 5 secs…

Docker Network

$ docker network ls
$ docker network inspect bridge
$ docker run -it --rm fmchan/foodtrucks-web bash
# curl 172.17.0.6:9200
# exit
$ docker network create foodtrucks-net
$ docker network ls

add --net foodtrucks-net

$ docker container stop es
$ docker container rm es
$ docker run -d --name es --net foodtrucks-net -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
$ docker network inspect foodtrucks-net
$ docker run -it --rm --net foodtrucks-net fmchan/foodtrucks-web bash
# curl es:9200
# ls
# python3 app.py
# exit
$ docker run -d --net foodtrucks-net -p 5000:5000 --name foodtrucks-web fmchan/foodtrucks-web
$ docker container ls
$ curl -I 127.0.0.1:5000

Docker Compose

$ docker-compose --version

docker-compose.yml

version: "3"
services:
  es:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
    container_name: es
    environment:
      - discovery.type=single-node
    ports:
      - 9200:9200
    volumes:
      - esdata1:/usr/share/elasticsearch/data
  web:
    image: prakhar1989/foodtrucks-web
    command: python3 app.py
    depends_on:
      - es
    ports:
      - 5000:5000
    volumes:
      - ./flask-app:/opt/flask-app
volumes:
  esdata1:
    driver: local
$ docker stop es foodtrucks-web
$ docker rm es foodtrucks-web
$ docker-compose up
$ docker-compose up -d
$ docker-compose ps
$ docker-compose down -v
$ docker network rm foodtrucks-net

reference: https://docker-curriculum.com/

Leave a Reply

Your email address will not be published. Required fields are marked *