39
Schneider Matic picture source - https://flic.kr/p/jEnibL OpenNMS meets Docker Ship OpenNMS Faster, Easier and with more Fun 2015-10-01 | Markus Schneider | OUCE 2015

OpenNMS meets Docker

Embed Size (px)

Citation preview

Page 1: OpenNMS meets Docker

SchneiderMatic

picture source ­ https://flic.kr/p/jEnibL

OpenNMS meets DockerShip OpenNMS Faster, Easier and with more Fun

2015­10­01 | Markus Schneider | OUCE 2015

Page 2: OpenNMS meets Docker

@schneidermatic

Markus Schneider | [email protected] | schneidermatic.blogspot.com 

SchneiderMaticAbout Me

Page 3: OpenNMS meets Docker

3picture source ­ https://flic.kr/p/ovqps1

SchneiderMaticAgenda

 Docker Basics

 Run OpenNMS with Docker

 OpenNMS Dockerfiles on GitHub

Page 4: OpenNMS meets Docker

4picture source ­ https://flic.kr/p/ovqps1

SchneiderMaticAgenda

 Docker Basics

 Run OpenNMS with Docker

 OpenNMS Dockerfiles on GitHub

Page 5: OpenNMS meets Docker

picture source - https://flic.kr/p/5o5H1E

Docker Mantra

Build

Ship

Run Any App

Anywhere

picture source ­ https://flic.kr/p/i1cyb9

Page 6: OpenNMS meets Docker

6

SchneiderMaticAre Companies using Docker?

http://www.indeed.com/jobtrends?q=docker&relative=1

Page 7: OpenNMS meets Docker

picture source - https://flic.kr/p/5o5H1E

Docker Products

Docker Architecture

Docker Engine

Docker Registry Hub

Docker Compose

Page 8: OpenNMS meets Docker

8

SchneiderMaticDocker Architecture

Profile/Organisation

Docker Daemon

Container

Container

Container

Docker Host (My Linux Box)

Image 2

Image 3

Image N

Image 1

Image 2

Image 3

Image N

Image 1

Docker Client

Docker Registry Hub

Further information - https://docs.docker.com/introduction/understanding-docker/

Page 9: OpenNMS meets Docker

9

SchneiderMaticDocker Engine

Docker Engine is build on top of the Linux kernel

Docker Engine can only be run directly on Linux OS

Boot2docker is needed for Mac and Microsoft Windows OS

https://docs.docker.com/installation/windows/#learn­the­key­concepts­before­installing

Page 10: OpenNMS meets Docker

10

SchneiderMaticDocker Registry Hub

Central place for Docker images

Software­as­a­Service platform for sharing, finding and extending Docker images

Features

    Private repositories     Organizations and teams     Automated Builds     Webhooks

https://hub.docker.com/

Page 11: OpenNMS meets Docker

11

SchneiderMaticDocker Compose

"Compose is a tool for defining and running multi­container applications with Docker. With Compose, you define a multi­container application in a single file, then spin your application up in a single command which does everything that needs to be done to get it running. (source – http://docker.com)

OpenNMS(Container)

PostgreSQL(Container)

Link

docker-compose.ymlopennms: image: opennms/app:16.0.2-1_co66 environment: - DB_POSTGRES_PASSWORD=mysecretpassword ports: - "8980:8980" - "18980:18980" - "1099:1099" - "8101:8101" - "61616:61616" links: - postgrespostgres: image: postgres:9.4 environment: - DB_POSTGRES_PASSWORD=mysecretpassword ports: - "5432:5432"

Page 12: OpenNMS meets Docker

picture source - https://flic.kr/p/5o5H1E

Docker Components

Docker Image

Docker Container

Dockerfile

picture source ­ https://flic.kr/p/82cqTr

Page 13: OpenNMS meets Docker

13

SchneiderMaticDocker Image

A Docker image can build on top of another Docker image

The first image layer is called a base image All the other layers except the last image layer are 

called parent images Images inherit all the properties and settings of their 

parent images

Images can be referenced by image ID or names

Local Docker images can be listed with $ docker images

Page 14: OpenNMS meets Docker

14

SchneiderMaticDocker Container

A Docker container is created when we execute$ docker run <image>

A writeable layer is added on top of all the image layers

This layer can have two different states:

    running     exited

Changes are permanent between start & stop

Changes are not written to the underlying image

Page 15: OpenNMS meets Docker

15

SchneiderMaticDockerfile

A file written in a DSL that contains instructions onsetting up a Docker image

The docker build command builds an image from a Dockerfile

OpenNMS Docker files are maintained on GitHub:https://github.com/opennms­forge/opennms­dockerfiles

# CommentINSTRUCTION arguments

FROM opennms/postgresql:pg9.3_co6.6 MAINTAINER [email protected] & [email protected]# Set work dir WORKDIR /tmp# JAVA ENVENV JAVA_VERSION 8u45ENV BUILD_VERSION b14ENV JAVA_HOME=/usr/java/orajava8# OPENNMS ENVENV OPENNMS_HOME /opt/opennms...

Page 16: OpenNMS meets Docker

picture source - https://flic.kr/p/5o5H1E

OpenNMS Specifics

Docker Registry Hub Repositories

OpenNMS Docker Image Types

OpenNMS Docker Image Tags

picture source ­ https://flic.kr/p/kaaStW

Page 17: OpenNMS meets Docker

17

SchneiderMaticDocker Registry Hub Repoitory

Page 18: OpenNMS meets Docker

18

SchneiderMaticOpenNMS Docker Image Types

CentOS 6.6

PostgreSQL 9.3

OpenNMS 16.0.2_01

All

CentOS 6.6

OpenNMS 16.0.2_01

App

CentOS 6.6

PostgreSQL 9.3

PostgreSQL

Page 19: OpenNMS meets Docker

19

SchneiderMaticOpenNMS Docker Image Tags

16.0.2-1_pg9.3_co6.6

OpenNMS CentOS

PostgreSQL

Page 20: OpenNMS meets Docker

20picture source ­ https://flic.kr/p/ovqps1

SchneiderMaticAgenda

 Docker Basics

 Run OpenNMS with Docker

 OpenNMS Dockerfiles on GitHub

Page 21: OpenNMS meets Docker

21

SchneiderMaticDocker Registry Hub Repoitory

CentOS 6.6

PostgreSQL 9.3

OpenNMS 16.0.2_01

All

CentOS 6.6

OpenNMS 16.0.2_01

App

CentOS 6.6

PostgreSQL 9.3

PostgreSQL

Page 22: OpenNMS meets Docker

22

SchneiderMaticDocker CLI ­ $ docker pull

$ docker pull opennms/all:16.0.2­1_pg9.3_co6.6$ export IMAGE="opennms/all:16.0.2­1_pg9.3_co6.6"$ export NAME="opennms­1"$ mkdir ~/opennms­docker && touch HelloDocker.txt$ cd ~/opennms­docker 

Only for thepresentationneeded!

Page 23: OpenNMS meets Docker

23

SchneiderMaticDocker CLI ­ $ docker pull

Profile/Organisation

Docker Daemon

Docker Host (My Linux Box)

Docker Client

$ docker pull <image>

Docker Registry Hub

opennms/app:16.0.2-1_co6.6

opennms/postgres:pg9.3_co6.6

opennms/all:16.0.2-1_pg9.3_co6.6

opennms/all:16.0.2-1_pg9.3_co6.6

Page 24: OpenNMS meets Docker

24

SchneiderMaticDocker CLI ­ $ docker run

$ docker run ­v $(pwd):$(pwd) ­w $(pwd) ­dit ­p 8980:8980 ­p 8443:8443 ­p 18980:18980 ­p 1099:1099 ­p 8101:8101 ­p 61616:61616 ­p 5432:5432 ­­name $NAME $IMAGE 

Page 25: OpenNMS meets Docker

25

SchneiderMaticDocker CLI – $ docker run

Profile/Organisation

Docker Daemon

Docker Host (My Linux Box)

Docker Client

$ docker run <image>

Docker Registry Hub

opennms/app:16.0.2-1_co6.6

opennms/postgres:pg9.3_co6.6

opennms/all:16.0.2-1_pg9.3_co6.6

opennms/all:16.0.2-1_pg9.3_co6.6

opennms-1

Page 26: OpenNMS meets Docker

26

SchneiderMaticDocker CLI ­ $ docker inspect

$ CONTAINER_ID=$(docker ps | grep "$IMAGE" | awk '{ print $1 }')$ IP_ADDRESS=$(docker inspect ­f '{{ .NetworkSettings.IPAddress }}' $CONTAINER_ID)$ printf "OpenNMS Console ­ http://$IP_ADDRESS:8980/opennms\n"

Page 27: OpenNMS meets Docker

27

SchneiderMaticDocker CLI – Running Container

Page 28: OpenNMS meets Docker

28

SchneiderMaticDocker CLI – $ docker attach

$ docker stop $CONTAINER_ID && docker start $CONTAINER_ID   $ docker attach $CONTAINER_ID$ CRTL + P, CRTL + Q # detach from the container

Page 29: OpenNMS meets Docker

29

SchneiderMaticDocker CLI – $ docker run

Profile/Organisation

Docker Daemon

Docker Host (My Linux Box)

Docker Client

$ docker run <image>

Docker Registry Hub

opennms/app:16.0.2-1_co6.6

opennms/postgres:pg9.3_co6.6

opennms/all:16.0.2-1_pg9.3_co6.6

opennms/all:16.0.2-1_pg9.3_co6.6

opennms-1

psql

Page 30: OpenNMS meets Docker

30

SchneiderMaticDocker CLI – $ docker attach

$ psql ­U postgres ­h $IP_ADDRESS  $ postgres # \l 

Page 31: OpenNMS meets Docker

31

SchneiderMaticDocker Registry Hub Repoitory

CentOS 6.6

PostgreSQL 9.3

OpenNMS 16.0.2_01

All

CentOS 6.6

OpenNMS 16.0.2_01

App

CentOS 6.6

PostgreSQL 9.3

PostgreSQL

Page 32: OpenNMS meets Docker

32

SchneiderMaticDocker Compose

$ cd ~/opennms­docker$ git clone https://github.com/opennms­forge/opennms­docker­compose$ cd  ./opennms­docker­compose && git checkout app/16.0.2­1_co66$ docker­compose up ­d

Page 33: OpenNMS meets Docker

33

SchneiderMaticDocker Compose

Profile/Organisation

Docker Daemon

Docker Host (My Linux Box)

Docker Client

Docker Registry Hub

opennms/app:16.0.2-1_co6.6

opennms/postgres:pg9.3_co6.6

opennms/all:16.0.2-1_pg9.3_co6.6

opennms/all:16.0.2-1_pg9.3_co6.6

opennms-1

opennms/app:16.0.2-1_co6.6

opennms/postgres:pg9.3_co6.6

Docker Compose

$ docker­compose up ­d

Page 34: OpenNMS meets Docker

34

SchneiderMaticDocker Compose

Profile/Organisation

Docker Daemon

Docker Host (My Linux Box)

Docker Client

Docker Registry Hub

opennms/app:16.0.2-1_co6.6

opennms/postgres:pg9.3_co6.6

opennms/all:16.0.2-1_pg9.3_co6.6

opennms/all:16.0.2-1_pg9.3_co6.6

opennms-1

opennms/app:16.0.2-1_co6.6

opennms/postgres:pg9.3_co6.6

Docker Compose

$ docker­compose up ­d

opennms-2

postgresql-1

Page 35: OpenNMS meets Docker

35

SchneiderMaticDocker Compose

$ docker ps

Page 36: OpenNMS meets Docker

36picture source ­ https://flic.kr/p/ovqps1

SchneiderMaticAgenda

 Docker Basics

 Run OpenNMS with Docker

 OpenNMS Dockerfiles on GitHub

Page 37: OpenNMS meets Docker

37

SchneiderMaticOpenNMS Forge

docker

Page 38: OpenNMS meets Docker

38

SchneiderMaticOpenNMS Forge

Page 39: OpenNMS meets Docker

39picture source ­ https://flic.kr/p/ovqps1

SchneiderMaticThank You!

Questions?