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/