Docker
Common commands
Show the current docker image running
sudo docker ps
Show the images available
sudo docker images
Stop a container id
sudo docker stop <container id>
Start a container id
sudo docker stop <container id>
Show ports exposed
sudo docker port <container id>
List current containers
sudo docker container ls -s
Remove a container
sudo docker container rm <container id>
Pull a container
sudo docker pull <image name>
This will remove all images without at least one container associated to them
docker image prune -a
This will remove all stopped containers
docker container prune
Build Container
RUN command
RUN su-exec volpara git clone https://github.com/bibble235/aports
Copying from on container
Given the container
FROM ubuntu:18.04 AS opencv_build
Copying can be done using
COPY --from=opencv_build /usr/local/opencv/ /usr/local/
Creating a docker postgres image
This exposes the default port 5432 for postgres
docker run --name postgresq-spring -e POSTGRES_USER=iain -e POSTGRES_PASSWORD=password -p 5432:5432 -v /data:/var/lib/postgresql/data -d postgres:alpine
The -d is to run the container in the background
The postgres:alpine is the image name
The -p is the port to expose which is the default for postgress
The -v is where the data will be stored
Volumes
List volumes
docker volume ls
Create a volumes
docker volume create hello
Build MediaWiki Container
Build your own Docker Image
Get the definition from github and build the container.
https://github.com/wikimedia/mediawiki-docker/blob/38d4e7f77f8b5b4efda91f969ccba2475fc2c597/1.35/apache/Dockerfile
docker build .
Use Prebuilt
We can install the prebuilt one with
docker pull mediawiki
We can find the container with the command
docker ps --format "table {{.ID}}\t{{.Status}}\t{{.Names}}"
b0ff6611123e Up 2 minutes some-mediawiki
898c8f40818d Up 6 hours k8s_operator_openshift-web...
b02230ae7074 Up 6 hours k8s_kube-dns_kube-dns-qhbvf_....
ea19641bc9a1 Up 6 hours k8s_webconsole_webconsole-...
0dc6ee563a9b Up 6 hours k8s_registry_docker-registry-...
0b6ea1064152 Up 6 hours k8s_operator_openshift-servic...
...
From there we can get the ip address with
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' b0ff6611123e
172.17.0.9
Delete Container
We can stop the contain and delete it
docker stop b0ff6611123e
docker container rm b0ff6611123e
Docker Compose
Django Container
Requirements
Here are the specific requirements for the Django cotainer.
Django==3.1.5
djangorestframework==3.12.2
mysqlclient==2.0.3
django-mysql==3.10.0
django-cors-headers==3.6.0
pika==1.1.0
DockerFile
This command runs the django app at start up
CMD python manage.py runserver 0.0.0.0:8000
Yaml
We can build a container using docker-compose. Create a docker file with
FROM python:3.9
ENV PYTHONNUMBUFFERED 1
WORKDIR /app
COPY requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
COPY . /app
CMD python manage.py runserver 0.0.0.0:8000
Next write a yaml to install software
version: '3.8'
services:
backend:
build:
context: .
dockerfile: Dockerfile
ports:
- 8000:8000
volumes:
- .:/app
depends_on:
- db
db:
image: mysql:5.7.32
restart: always
environment:
MYSQL_DATABASE: admin
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
volumes:
- .dbdata:/var/lib/nysql
ports:
- 33066:33036
Create a requirements.txt document
Django==3.1.5
djangorestframework==3.12.2
mysqlclient==2.0.3
django-mysql==3.10.0
django-cors-headers==3.6.0
pika==1.1.0