Slide 1

Slide 1 text

Containers for Beginners

Slide 2

Slide 2 text

@mikesir87 Disclaimer: I cannot explain sprankle pods either!

Slide 3

Slide 3 text

@mikesir87 Quick History of Shipping Source: https://www.publicdomainpictures.net/en/view-image.php?image=275355 Source: https://en.wikipedia.org/wiki/Rail_freight_in_Great_Britain Source: https://pxhere.com/en/photo/553345

Slide 4

Slide 4 text

Software = Shipping?

Slide 5

Slide 5 text

@mikesir87 Shipping in Software Source: https://www.usafe.af.mil/News/Photos/igphoto/2000887438/

Slide 6

Slide 6 text

@mikesir87 Either of these two scenarios sound familiar to you?

Slide 7

Slide 7 text

@mikesir87 Welcome! Glad to have you on the team! Clone the repo, use the wiki for setup instructions, and update the docs as needed. Good luck!

Slide 8

Slide 8 text

@mikesir87

Slide 9

Slide 9 text

@mikesir87 Imagine if...

Slide 10

Slide 10 text

@mikesir87 Creating Images Dockerfile docker build FROM node WORKDIR /app COPY package.json yarn.lock . RUN yarn install COPY src ./src CMD ["node", "src/index.js"]

Slide 11

Slide 11 text

@mikesir87 Sharing Images docker push Source: https://landscape.cncf.io

Slide 12

Slide 12 text

@mikesir87 Let’s build an image!

Slide 13

Slide 13 text

@mikesir87 What’s a container then? docker container run

Slide 14

Slide 14 text

@mikesir87

Slide 15

Slide 15 text

@mikesir87 Containers vs VMs Infrastructure Host Operating System Hypervisor Guest OS Bins/Libs App 1 Guest OS Bins/Libs App 2 Guest OS Bins/Libs App 3 Infrastructure Operating System Bins/Libs App 1 Bins/Libs App 2 Bins/Libs App 3 Docker Daemon

Slide 16

Slide 16 text

@mikesir87 Image Layering Dockerfile docker image history

Slide 17

Slide 17 text

@mikesir87 Layer contents file1 file2 file3 file4 file2 file5 file1 file2 file3 file4 file5 Layer 1 Layer 2 Merged

Slide 18

Slide 18 text

@mikesir87 What about deleted files? ● ● file1 file2 file3 file4 file2 file5 file1 file2 file3 file5 Layer 1 Layer 2 Merged .wh.file4 Layer 3

Slide 19

Slide 19 text

@mikesir87 WARNING! Be careful what you put into images. Deleted files might not actually be gone!

Slide 20

Slide 20 text

@mikesir87 Two Best Practices Incoming!

Slide 21

Slide 21 text

@mikesir87 Clean up as you go! ● ● RUN FROM ubuntu RUN apt-get update RUN apt-get install -y python python-pip RUN pip install awscli RUN apt-get autoremove --purge -y python-pip FROM ubuntu RUN apt-get update && \ apt-get install -y python python-pip && \ pip install awscli && \ apt-get autoremove --purge -y python-pip && \ rm -rf /var/lib/apt/lists/*

Slide 22

Slide 22 text

@mikesir87 Keep images tight and focused FROM node AS build WORKDIR /usr/src/app COPY package.json yarn.lock . RUN yarn install COPY public ./public COPY src ./src RUN yarn build FROM nginx:alpine COPY nginx.conf /etc/nginx/nginx.conf COPY --from=build /usr/src/app/build /usr/share/nginx/html

Slide 23

Slide 23 text

@mikesir87 How do you persist data?

Slide 24

Slide 24 text

@mikesir87 ● ● ○ ○ -v $HOME/mysql-data:/var/lib/mysql ● ○ ○ docker volume inspect ○ -v mysql-data:/var/lib/mysql Volumes

Slide 25

Slide 25 text

@mikesir87 Show me these volumes!

Slide 26

Slide 26 text

@mikesir87

Slide 27

Slide 27 text

@mikesir87 Docker Compose docker-compose.yml

Slide 28

Slide 28 text

@mikesir87 Docker Networking API 1 Database Reverse Proxy React App API 2 Cache

Slide 29

Slide 29 text

@mikesir87 Quick compose demo!

Slide 30

Slide 30 text

@mikesir87 Container Orchestration

Slide 31

Slide 31 text

@mikesir87 Actors in Orchestration

Slide 32

Slide 32 text

@mikesir87 Various Orchestrators

Slide 33

Slide 33 text

@mikesir87 Quick Swarm Demo!

Slide 34

Slide 34 text

@mikesir87 Recap

Slide 35

Slide 35 text

@mikesir87 WARNING! Containers are NOT a silver bullet that will fix your company culture

Slide 36

Slide 36 text

Thank you! Rate the session!