Slide 1

Slide 1 text

Containing Atlassian Running the Atlassian Suite with Docker

Slide 2

Slide 2 text

David McKay @rawkode Software Consultant Serial Meetup Organiser

Slide 3

Slide 3 text

Containing Atlassian

Slide 4

Slide 4 text

Why Containers?

Slide 5

Slide 5 text

Containment for neatness

Slide 6

Slide 6 text

Containment for security

Slide 7

Slide 7 text

Containment for speed

Slide 8

Slide 8 text

Why Docker?

Slide 9

Slide 9 text

Because it’s a trendy

Slide 10

Slide 10 text

Because it’s good on the CV

Slide 11

Slide 11 text

Because all your friends are doing it

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Docker OK; I’m Serial Now ● Industry Leader ● Always Evolving ● Proven at Scale ● Tooling for all environments ● OCI / runC ● Official Images

Slide 14

Slide 14 text

Vocabulary ● Dockerfile ● Image ● Container

Slide 15

Slide 15 text

Dockerfile FROM ubuntu:16.10 RUN apt-get update RUN apt-get install x y z CMD java

Slide 16

Slide 16 text

Docker Image $ docker build -t acme/jira:7.0 .

Slide 17

Slide 17 text

Docker Images $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE elixir 1.3 b80c8e9d71f9 3 weeks ago 758.7 MB acme/jira 7.0 e552540688e1 4 weeks ago 224.4 MB alpine 3.4 ee4603260daa 4 weeks ago 4.803 MB

Slide 18

Slide 18 text

Docker Container $ docker run acme/jira:7.0

Slide 19

Slide 19 text

Orchestration With Docker Swarm Mode

Slide 20

Slide 20 text

Swarm Mode ≇ Swarm

Slide 21

Slide 21 text

Vocabulary ● Node ● Manager ● Worker ● Service

Slide 22

Slide 22 text

Creating a Swarm $ docker swarm init

Slide 23

Slide 23 text

Joining a Swarm $ docker swarm join --token xxxx 192.168.66.100:2377

Slide 24

Slide 24 text

Creating a Service $ docker service create --name jira acme/jira:7.0

Slide 25

Slide 25 text

Creating Services $ docker service create --name crowd acme/crowd:2.10 $ docker service create --name jira acme/jira:7.0 $ docker service create --name confl.. acme/confluence:5.10

Slide 26

Slide 26 text

Scaling

Slide 27

Slide 27 text

Scaling a Service $ docker service scale jira=4

Slide 28

Slide 28 text

Service Discovery

Slide 29

Slide 29 text

Scaling a Service $ wget http://jira:8080 $ wget http://confluence:8081

Slide 30

Slide 30 text

Oh yeah, and you get load balancing for free ...

Slide 31

Slide 31 text

Upgrading

Slide 32

Slide 32 text

Scaling a Service $ docker service update --image acme/jira:10.1 jira

Slide 33

Slide 33 text

Potential Problems

Slide 34

Slide 34 text

Configuration

Slide 35

Slide 35 text

Configuration $ docker service create --env DB_HOST=postgres $ docker service update --env-add DB_HOST=postgres

Slide 36

Slide 36 text

Persistence

Slide 37

Slide 37 text

Persistence $ docker service create --mount \ type=mount, source=/mnt/volume, destination=/path/in/container

Slide 38

Slide 38 text

⚖ How can I scale this?

Slide 39

Slide 39 text

Scaling the Persistence NFS / Fuse mount on all nodes Feeling fancy? Check out CernVM-FS!

Slide 40

Slide 40 text

This brings other problems

Slide 41

Slide 41 text

With the Atlassian Suite You can deal with it, as most writes to the disk are simply cache! Except BitBucket

Slide 42

Slide 42 text

Official Support?

Slide 43

Slide 43 text

⏳ It’s being worked on…

Slide 44

Slide 44 text

Atlassian on Docker Hub https://hub.docker.com/r/atlassian/

Slide 45

Slide 45 text

☹ BitBucket & Confluence only

Slide 46

Slide 46 text

Want more? Pester @durdn

Slide 47

Slide 47 text

That’s it! Any questions?