Docker-workshop
- https://docker-curriculum.com/#webapps-with-docker
- https://github.com/Vizuri/docker-exercises
- https://learndocker.online/courses/
- https://labs.play-with-docker.com/
Docker Commands
docker image ls
docker images
docker ps
docker ps -a
docker run -dit --name web debian
- i : interactive
-d : detach
- t : open tty session
-- rm : automatically removes the containter when it exits
docker stop web
docker rm web
docker inspect web
docker kill web
docker logs -f web (follow log output)
docker logs -t web (show timestamp)
docker exec -it 239a /bin/bash
docker ports static-site
docker run --name postgres-db -p 5432:5432 -e POSTGRES_PASSWORD=xxxxx -d postgres
docker run --name rabbit-mq --hostname rmq -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=xxxxx -d rabbitmq:3.11-management
Docker volumes : local host directory can be mapped to new/existing directory of docker container using -v handle
docker run -it --name test1 -v C:\Users\ishan\Documents\docker_test:/data alpine
- docker pull=docker image pull
- docker create=docker container create
- docker start=docker container start
- docker ps=docker container ps
- docker run=docker create;docker start
- docker rmi=docker image rm
- docker rm=docker container rm
- FROM python base image
- WORKDIR working directory
- COPY files to container
- RUN installation of libraries and modules
- EXPOSE ports
- VOLUME declare mount point in container
- ENV environment variables
- LABEL
- ENTRYPOINT start-up commands
- CMD ... and its arguements
- One Application or Component per Container
- Horizontal Scaling
- Application Observability
- Security Framework
- Application Secrets
- Automated Deployment
- Immutable and Disposable Containers
- Application Data in Volumes
- Virtual Networks
- Small Container Images
- Image Tagging
- Create Source Code
- Create Container with Base Image
- Create a Working Directory
- Copy source code to Working Dir
- Install Libraries and dependencies
- Install additional software
- Commmit the Container to New Image
Dockerfile
ARG ImageTag=3.7.3
FROM $BaseImage:$ImageTag
ENV PYTHONUNBUFFERED 1
ARG DjangoVersion=2.2.1
RUN pip install Django==$DjangoVersion
WORKDIR /code
Docker build and run
docker build -t django:3.7.3 -f base_image/Dockerfile.mydjango .
docker run --rm -it django:3.7.3 django-admin version
docker run --rm -it -v ${PWD}:/code django:3.7.3 django-admin startproject myproject
docker run --rm -it -v ${PWD}:/code -p 8000:8000 django:3.7.3 python myproject/manage.py migrate
docker run --rm -it -v ${PWD}:/code -p 8000:8000 django:3.7.3 python myproject/manage.py runserver 0:8000