Slide 1

Slide 1 text

DOCKER ESSENTIALS FOR PYTHON DEVELOPERS Vuyisile Ndlovu DevOps Specialist @terrameijar

Slide 2

Slide 2 text

Vuyisile Ndlovu @terrameijar vuyisile.com @terrameijar

Slide 3

Slide 3 text

Links to Slides and more vuyisile.com/pyconzim2024

Slide 4

Slide 4 text

TODAY, YOU’LL LEARN ● What Docker is ● Why we need it ● Core Docker concepts ● Practical Demo: Dockerising a Python application ● Building and running a Docker container ● Tips and best practices for running containers

Slide 5

Slide 5 text

DOCKER IS. . . @terrameijar | vuyisile.com/pyconzim24

Slide 6

Slide 6 text

DOCKER CONTAINERS vs VIRTUAL MACHINES

Slide 7

Slide 7 text

WHY DOCKER?

Slide 8

Slide 8 text

Without Docker ● Setting up environments hard ● Dependency problems in different OSes ● Difficult for teams not familiar with your stack @terrameijar | vuyisile.com/pyconzim24

Slide 9

Slide 9 text

DOCKER: CORE CONCEPTS

Slide 10

Slide 10 text

Docker Images: templates used to create containers @terrameijar | vuyisile.com/pyconzim24

Slide 11

Slide 11 text

Images are like . . .

Slide 12

Slide 12 text

@terrameijar | vuyisile.com/pyconzim24 - Cake Premix contains: - Baking instructions - Ingredients to bake a cake - Produces consistent and predictable results CAKE PREMIX

Slide 13

Slide 13 text

Docker Containers: running instances of Images @terrameijar | vuyisile.com/pyconzim24

Slide 14

Slide 14 text

Containers are like . . .

Slide 15

Slide 15 text

@terrameijar | vuyisile.com/pyconzim24

Slide 16

Slide 16 text

Dockerfile: Instructions for building Docker Images @terrameijar | vuyisile.com/pyconzim24

Slide 17

Slide 17 text

Dockerfile example

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Docker Hub: Website for sharing Docker Images @terrameijar | vuyisile.com/pyconzim24

Slide 20

Slide 20 text

Docker Compose: Tool for defining and running multi container applications @terrameijar | vuyisile.com/pyconzim24

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Docker Volume: Persistent storage for containers @terrameijar | vuyisile.com/pyconzim24

Slide 23

Slide 23 text

Docker Networks: Enable communication between containers (and other services) @terrameijar | vuyisile.com/pyconzim24

Slide 24

Slide 24 text

Common Docker Commands

Slide 25

Slide 25 text

docker image build ● Builds a Docker image based on a Dockerfile @terrameijar | vuyisile.com/pyconzim24

Slide 26

Slide 26 text

docker container run ● Convert an image into a container and start it @terrameijar | vuyisile.com/pyconzim24

Slide 27

Slide 27 text

docker container stop ● Stops running containers @terrameijar | vuyisile.com/pyconzim24

Slide 28

Slide 28 text

docker volume create ● Create a Docker Volume @terrameijar | vuyisile.com/pyconzim24

Slide 29

Slide 29 text

DEMO: Dockerising a Python application

Slide 30

Slide 30 text

@terrameijar | vuyisile.com/pyconzim24

Slide 31

Slide 31 text

@terrameijar | vuyisile.com/pyconzim24

Slide 32

Slide 32 text

SIMPLE FLASK APPLICATION @terrameijar | vuyisile.com/pyconzim24

Slide 33

Slide 33 text

Complex Flask application

Slide 34

Slide 34 text

@terrameijar | vuyisile.com/pyconzim24

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

Docker Best Practices @terrameijar | vuyisile.com/pyconzim24 1. Multi stage builds 2. Use small Docker Base Images 3. Use unprivileged containers 4. Prefer exec form over shell form for running CMD, ENTRYPOINT i.e CMD ["--host", "0.0.0.0", "--port", "8001"]

Slide 38

Slide 38 text

THANK YOU! @terrameijar | vuyisile.com/pyconzim24