49
Building a Raspberry PI Cluster + Docker Swarm

Building a Raspberry PI Cluster + Docker Swarm

Embed Size (px)

Citation preview

Page 1: Building a Raspberry PI Cluster + Docker Swarm

Building a Raspberry PI Cluster + Docker Swarm

ABOUT ME

Will WilimekTwitter willywosWebsite wosnetnet

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Work Prositions Inc

MATERIALS

RASPBERRY PI GET LIKE 3 OR 4 OF THESE

Amazon $3570 + PrimehttpswwwamazoncomRaspberry-Model-A1-2GHz-64-bit-quad-coredpB01CD5VC92

Adafruit Sparkfun

SD CARDS

Amazon $820 + PrimehttpswwwamazoncomgpproductB004ZIENBA

1 FOR EACH PI 8GB OR 16GB

ETHERNET SWITCH

Amazon $995 + PrimehttpswwwamazoncomgpproductB000FNFSPY

1 OF THESE BUT MAKE SURE YOU HAVE ENOUGH PORTS

USB CHARGE HUB

Amazon $899httpswwwamazoncomgpproductB013OVOO6M

1 OF THESE BUT MAKE SURE YOU HAVE ENOUGH PORTS

SPACERS

Amazon $890 + PRIMEhttpswwwamazoncomgpproductB06XW978ZP

YOU NEED THESE IF YOU PLAN TO STACK YOUR PIrsquoS

ETHERNET CABLES

Amazon $795httpswwwamazoncomgpproductB01HC11V4I

GET THESE FROM YOUR WORK

MICRO USB CABLES

Amazon 4PACK $999 PRIMEhttpswwwamazoncomAnker-4-Pack-PowerLine-Micro-USBdpB015XR60MQ

GET THESE FROM YOUR WORK

USB COMPUTER FAN

Amazon $1400httpswwwamazoncomCoolerguys-Dual-80mm-Cooling-FansdpB002NVC1DS

STEAL THESE FROM YOUR OLD DESKTOPS AT WORK

TOTAL COST

LOTS OF $$$ LIKE $240 WITH 4 PIrsquoS

BEFORE YOU PUT IT ALL TOGETHER

FLASH THE SDCARDS

WHAT IS HYPRIOT (HIP-RIOT)

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 2: Building a Raspberry PI Cluster + Docker Swarm

ABOUT ME

Will WilimekTwitter willywosWebsite wosnetnet

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Work Prositions Inc

MATERIALS

RASPBERRY PI GET LIKE 3 OR 4 OF THESE

Amazon $3570 + PrimehttpswwwamazoncomRaspberry-Model-A1-2GHz-64-bit-quad-coredpB01CD5VC92

Adafruit Sparkfun

SD CARDS

Amazon $820 + PrimehttpswwwamazoncomgpproductB004ZIENBA

1 FOR EACH PI 8GB OR 16GB

ETHERNET SWITCH

Amazon $995 + PrimehttpswwwamazoncomgpproductB000FNFSPY

1 OF THESE BUT MAKE SURE YOU HAVE ENOUGH PORTS

USB CHARGE HUB

Amazon $899httpswwwamazoncomgpproductB013OVOO6M

1 OF THESE BUT MAKE SURE YOU HAVE ENOUGH PORTS

SPACERS

Amazon $890 + PRIMEhttpswwwamazoncomgpproductB06XW978ZP

YOU NEED THESE IF YOU PLAN TO STACK YOUR PIrsquoS

ETHERNET CABLES

Amazon $795httpswwwamazoncomgpproductB01HC11V4I

GET THESE FROM YOUR WORK

MICRO USB CABLES

Amazon 4PACK $999 PRIMEhttpswwwamazoncomAnker-4-Pack-PowerLine-Micro-USBdpB015XR60MQ

GET THESE FROM YOUR WORK

USB COMPUTER FAN

Amazon $1400httpswwwamazoncomCoolerguys-Dual-80mm-Cooling-FansdpB002NVC1DS

STEAL THESE FROM YOUR OLD DESKTOPS AT WORK

TOTAL COST

LOTS OF $$$ LIKE $240 WITH 4 PIrsquoS

BEFORE YOU PUT IT ALL TOGETHER

FLASH THE SDCARDS

WHAT IS HYPRIOT (HIP-RIOT)

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 3: Building a Raspberry PI Cluster + Docker Swarm

MATERIALS

RASPBERRY PI GET LIKE 3 OR 4 OF THESE

Amazon $3570 + PrimehttpswwwamazoncomRaspberry-Model-A1-2GHz-64-bit-quad-coredpB01CD5VC92

Adafruit Sparkfun

SD CARDS

Amazon $820 + PrimehttpswwwamazoncomgpproductB004ZIENBA

1 FOR EACH PI 8GB OR 16GB

ETHERNET SWITCH

Amazon $995 + PrimehttpswwwamazoncomgpproductB000FNFSPY

1 OF THESE BUT MAKE SURE YOU HAVE ENOUGH PORTS

USB CHARGE HUB

Amazon $899httpswwwamazoncomgpproductB013OVOO6M

1 OF THESE BUT MAKE SURE YOU HAVE ENOUGH PORTS

SPACERS

Amazon $890 + PRIMEhttpswwwamazoncomgpproductB06XW978ZP

YOU NEED THESE IF YOU PLAN TO STACK YOUR PIrsquoS

ETHERNET CABLES

Amazon $795httpswwwamazoncomgpproductB01HC11V4I

GET THESE FROM YOUR WORK

MICRO USB CABLES

Amazon 4PACK $999 PRIMEhttpswwwamazoncomAnker-4-Pack-PowerLine-Micro-USBdpB015XR60MQ

GET THESE FROM YOUR WORK

USB COMPUTER FAN

Amazon $1400httpswwwamazoncomCoolerguys-Dual-80mm-Cooling-FansdpB002NVC1DS

STEAL THESE FROM YOUR OLD DESKTOPS AT WORK

TOTAL COST

LOTS OF $$$ LIKE $240 WITH 4 PIrsquoS

BEFORE YOU PUT IT ALL TOGETHER

FLASH THE SDCARDS

WHAT IS HYPRIOT (HIP-RIOT)

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 4: Building a Raspberry PI Cluster + Docker Swarm

RASPBERRY PI GET LIKE 3 OR 4 OF THESE

Amazon $3570 + PrimehttpswwwamazoncomRaspberry-Model-A1-2GHz-64-bit-quad-coredpB01CD5VC92

Adafruit Sparkfun

SD CARDS

Amazon $820 + PrimehttpswwwamazoncomgpproductB004ZIENBA

1 FOR EACH PI 8GB OR 16GB

ETHERNET SWITCH

Amazon $995 + PrimehttpswwwamazoncomgpproductB000FNFSPY

1 OF THESE BUT MAKE SURE YOU HAVE ENOUGH PORTS

USB CHARGE HUB

Amazon $899httpswwwamazoncomgpproductB013OVOO6M

1 OF THESE BUT MAKE SURE YOU HAVE ENOUGH PORTS

SPACERS

Amazon $890 + PRIMEhttpswwwamazoncomgpproductB06XW978ZP

YOU NEED THESE IF YOU PLAN TO STACK YOUR PIrsquoS

ETHERNET CABLES

Amazon $795httpswwwamazoncomgpproductB01HC11V4I

GET THESE FROM YOUR WORK

MICRO USB CABLES

Amazon 4PACK $999 PRIMEhttpswwwamazoncomAnker-4-Pack-PowerLine-Micro-USBdpB015XR60MQ

GET THESE FROM YOUR WORK

USB COMPUTER FAN

Amazon $1400httpswwwamazoncomCoolerguys-Dual-80mm-Cooling-FansdpB002NVC1DS

STEAL THESE FROM YOUR OLD DESKTOPS AT WORK

TOTAL COST

LOTS OF $$$ LIKE $240 WITH 4 PIrsquoS

BEFORE YOU PUT IT ALL TOGETHER

FLASH THE SDCARDS

WHAT IS HYPRIOT (HIP-RIOT)

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 5: Building a Raspberry PI Cluster + Docker Swarm

SD CARDS

Amazon $820 + PrimehttpswwwamazoncomgpproductB004ZIENBA

1 FOR EACH PI 8GB OR 16GB

ETHERNET SWITCH

Amazon $995 + PrimehttpswwwamazoncomgpproductB000FNFSPY

1 OF THESE BUT MAKE SURE YOU HAVE ENOUGH PORTS

USB CHARGE HUB

Amazon $899httpswwwamazoncomgpproductB013OVOO6M

1 OF THESE BUT MAKE SURE YOU HAVE ENOUGH PORTS

SPACERS

Amazon $890 + PRIMEhttpswwwamazoncomgpproductB06XW978ZP

YOU NEED THESE IF YOU PLAN TO STACK YOUR PIrsquoS

ETHERNET CABLES

Amazon $795httpswwwamazoncomgpproductB01HC11V4I

GET THESE FROM YOUR WORK

MICRO USB CABLES

Amazon 4PACK $999 PRIMEhttpswwwamazoncomAnker-4-Pack-PowerLine-Micro-USBdpB015XR60MQ

GET THESE FROM YOUR WORK

USB COMPUTER FAN

Amazon $1400httpswwwamazoncomCoolerguys-Dual-80mm-Cooling-FansdpB002NVC1DS

STEAL THESE FROM YOUR OLD DESKTOPS AT WORK

TOTAL COST

LOTS OF $$$ LIKE $240 WITH 4 PIrsquoS

BEFORE YOU PUT IT ALL TOGETHER

FLASH THE SDCARDS

WHAT IS HYPRIOT (HIP-RIOT)

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 6: Building a Raspberry PI Cluster + Docker Swarm

ETHERNET SWITCH

Amazon $995 + PrimehttpswwwamazoncomgpproductB000FNFSPY

1 OF THESE BUT MAKE SURE YOU HAVE ENOUGH PORTS

USB CHARGE HUB

Amazon $899httpswwwamazoncomgpproductB013OVOO6M

1 OF THESE BUT MAKE SURE YOU HAVE ENOUGH PORTS

SPACERS

Amazon $890 + PRIMEhttpswwwamazoncomgpproductB06XW978ZP

YOU NEED THESE IF YOU PLAN TO STACK YOUR PIrsquoS

ETHERNET CABLES

Amazon $795httpswwwamazoncomgpproductB01HC11V4I

GET THESE FROM YOUR WORK

MICRO USB CABLES

Amazon 4PACK $999 PRIMEhttpswwwamazoncomAnker-4-Pack-PowerLine-Micro-USBdpB015XR60MQ

GET THESE FROM YOUR WORK

USB COMPUTER FAN

Amazon $1400httpswwwamazoncomCoolerguys-Dual-80mm-Cooling-FansdpB002NVC1DS

STEAL THESE FROM YOUR OLD DESKTOPS AT WORK

TOTAL COST

LOTS OF $$$ LIKE $240 WITH 4 PIrsquoS

BEFORE YOU PUT IT ALL TOGETHER

FLASH THE SDCARDS

WHAT IS HYPRIOT (HIP-RIOT)

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 7: Building a Raspberry PI Cluster + Docker Swarm

USB CHARGE HUB

Amazon $899httpswwwamazoncomgpproductB013OVOO6M

1 OF THESE BUT MAKE SURE YOU HAVE ENOUGH PORTS

SPACERS

Amazon $890 + PRIMEhttpswwwamazoncomgpproductB06XW978ZP

YOU NEED THESE IF YOU PLAN TO STACK YOUR PIrsquoS

ETHERNET CABLES

Amazon $795httpswwwamazoncomgpproductB01HC11V4I

GET THESE FROM YOUR WORK

MICRO USB CABLES

Amazon 4PACK $999 PRIMEhttpswwwamazoncomAnker-4-Pack-PowerLine-Micro-USBdpB015XR60MQ

GET THESE FROM YOUR WORK

USB COMPUTER FAN

Amazon $1400httpswwwamazoncomCoolerguys-Dual-80mm-Cooling-FansdpB002NVC1DS

STEAL THESE FROM YOUR OLD DESKTOPS AT WORK

TOTAL COST

LOTS OF $$$ LIKE $240 WITH 4 PIrsquoS

BEFORE YOU PUT IT ALL TOGETHER

FLASH THE SDCARDS

WHAT IS HYPRIOT (HIP-RIOT)

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 8: Building a Raspberry PI Cluster + Docker Swarm

SPACERS

Amazon $890 + PRIMEhttpswwwamazoncomgpproductB06XW978ZP

YOU NEED THESE IF YOU PLAN TO STACK YOUR PIrsquoS

ETHERNET CABLES

Amazon $795httpswwwamazoncomgpproductB01HC11V4I

GET THESE FROM YOUR WORK

MICRO USB CABLES

Amazon 4PACK $999 PRIMEhttpswwwamazoncomAnker-4-Pack-PowerLine-Micro-USBdpB015XR60MQ

GET THESE FROM YOUR WORK

USB COMPUTER FAN

Amazon $1400httpswwwamazoncomCoolerguys-Dual-80mm-Cooling-FansdpB002NVC1DS

STEAL THESE FROM YOUR OLD DESKTOPS AT WORK

TOTAL COST

LOTS OF $$$ LIKE $240 WITH 4 PIrsquoS

BEFORE YOU PUT IT ALL TOGETHER

FLASH THE SDCARDS

WHAT IS HYPRIOT (HIP-RIOT)

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 9: Building a Raspberry PI Cluster + Docker Swarm

ETHERNET CABLES

Amazon $795httpswwwamazoncomgpproductB01HC11V4I

GET THESE FROM YOUR WORK

MICRO USB CABLES

Amazon 4PACK $999 PRIMEhttpswwwamazoncomAnker-4-Pack-PowerLine-Micro-USBdpB015XR60MQ

GET THESE FROM YOUR WORK

USB COMPUTER FAN

Amazon $1400httpswwwamazoncomCoolerguys-Dual-80mm-Cooling-FansdpB002NVC1DS

STEAL THESE FROM YOUR OLD DESKTOPS AT WORK

TOTAL COST

LOTS OF $$$ LIKE $240 WITH 4 PIrsquoS

BEFORE YOU PUT IT ALL TOGETHER

FLASH THE SDCARDS

WHAT IS HYPRIOT (HIP-RIOT)

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 10: Building a Raspberry PI Cluster + Docker Swarm

MICRO USB CABLES

Amazon 4PACK $999 PRIMEhttpswwwamazoncomAnker-4-Pack-PowerLine-Micro-USBdpB015XR60MQ

GET THESE FROM YOUR WORK

USB COMPUTER FAN

Amazon $1400httpswwwamazoncomCoolerguys-Dual-80mm-Cooling-FansdpB002NVC1DS

STEAL THESE FROM YOUR OLD DESKTOPS AT WORK

TOTAL COST

LOTS OF $$$ LIKE $240 WITH 4 PIrsquoS

BEFORE YOU PUT IT ALL TOGETHER

FLASH THE SDCARDS

WHAT IS HYPRIOT (HIP-RIOT)

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 11: Building a Raspberry PI Cluster + Docker Swarm

USB COMPUTER FAN

Amazon $1400httpswwwamazoncomCoolerguys-Dual-80mm-Cooling-FansdpB002NVC1DS

STEAL THESE FROM YOUR OLD DESKTOPS AT WORK

TOTAL COST

LOTS OF $$$ LIKE $240 WITH 4 PIrsquoS

BEFORE YOU PUT IT ALL TOGETHER

FLASH THE SDCARDS

WHAT IS HYPRIOT (HIP-RIOT)

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 12: Building a Raspberry PI Cluster + Docker Swarm

TOTAL COST

LOTS OF $$$ LIKE $240 WITH 4 PIrsquoS

BEFORE YOU PUT IT ALL TOGETHER

FLASH THE SDCARDS

WHAT IS HYPRIOT (HIP-RIOT)

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 13: Building a Raspberry PI Cluster + Docker Swarm

BEFORE YOU PUT IT ALL TOGETHER

FLASH THE SDCARDS

WHAT IS HYPRIOT (HIP-RIOT)

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 14: Building a Raspberry PI Cluster + Docker Swarm

FLASH THE SDCARDS

WHAT IS HYPRIOT (HIP-RIOT)

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 15: Building a Raspberry PI Cluster + Docker Swarm

WHAT IS HYPRIOT (HIP-RIOT)

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 16: Building a Raspberry PI Cluster + Docker Swarm

HYPRIOT IS AN OS THATrsquoS ALREADY LOADED WITH DOCKER + DOCKER SWARM amp BUILT FOR ARM

HTTPBLOGHYPRIOTCOM

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 17: Building a Raspberry PI Cluster + Docker Swarm

HOW TO FLASH THE SD-CARDS

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 18: Building a Raspberry PI Cluster + Docker Swarm

$ curl -O curl -O httpsrawgithubusercontentcomhypriotflashmaster$(uname -s)flash$ chmod +x flash$ sudo mv flash usrlocalbinflash

DOWNLOAD FLASH

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 19: Building a Raspberry PI Cluster + Docker Swarm

PLUG IN SDCARD RUN FLASH

$flash mdash-hostname sw-pi1 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi2 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

$flash mdash-hostname sw-pi3 httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

MAKE SURE TO CHANGE THE HOSTNAME ARGUMENT $flash mdash-hostname black-pearl httpsgithubcomhypriotimage-builder-rpireleasesdownloadv140hypriotos-rpi-v140imgzip

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 20: Building a Raspberry PI Cluster + Docker Swarm

IT SHOULD LOOK LIKE THIS

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 21: Building a Raspberry PI Cluster + Docker Swarm

PUT THE SD CARDS INTO THE RASPBERRY PI

PLUG EVERYTHING IN THEN POWER IT UP

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 22: Building a Raspberry PI Cluster + Docker Swarm

A SHEEP A DRUM AND A SNAKE FELL OFF A CLIFF

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 23: Building a Raspberry PI Cluster + Docker Swarm

BAA-DUM-TSS

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 24: Building a Raspberry PI Cluster + Docker Swarm

I LOVE THE SWARMA ITrsquoS SO EASY ITrsquoS BIGLY WINNING

Donald Trump

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 25: Building a Raspberry PI Cluster + Docker Swarm

$ ssh pirate1921680100$ docker swarm init

CREATING THE DOCKER SWARM

Swarm initialized current node (mxgp6ta0yln3hwqrn2iawnvdh) is now a manager

To add a worker to this swarm run the following command

docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

To add a manager to this swarm run docker swarm join-token manager and follow the instructions

DO THIS ON THE PI YOU WANT AS THE MANAGER

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 26: Building a Raspberry PI Cluster + Docker Swarm

$ ssh pirate1921680101$ docker swarm join --token SWMTKN-1-4rmlnoly0tr652k1xjgbm5xwpx12l2wa8kpzwlr7c3rnyo81fl-e9rsyimu82cle1nbqbqm8q4er 19216801002377

This node joined a swarm as a worker

ADDING WORKERS DO THIS FOR ALL THE OTHER RASPBERRY PIrsquoS

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 27: Building a Raspberry PI Cluster + Docker Swarm

VIEWING YOUR NODES$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

a1s9roh5aso7nvactav39l26s sw-pi1 Ready Active

a8lkxhphl2dhxu1ht35xhr1k2 black-pearl Ready Active Leader

jc33a76532hlyen9rbei3rnz9 sw-pi2 Ready Active

nildn6z5jwpfo8me1vzdy8t30 sw-pi3 Ready Active

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 28: Building a Raspberry PI Cluster + Docker Swarm

CREATE A SERVICE

$ docker service create --name whoami -p 80808000 hypriotrpi-whoami

SIMPLE EXAMPLE OF A HYPRIOT DOCKER IMAGE

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 29: Building a Raspberry PI Cluster + Docker Swarm

SCALE THE SERVICE

$ docker service scale whoami=4 whoami scaled to 4

RUN THE SERVICE ON ALL THE NODES

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 11 hypriotrpi-whoamilatest

$ docker service ls ID NAME MODE REPLICAS IMAGE h8gin96aen81 whoami replicated 44 hypriotrpi-whoamilatest

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 30: Building a Raspberry PI Cluster + Docker Swarm

VERIFY THE NODE IS RUNNING THE SERVICE

$ ssh pirate1921680101

HypriotOSarmv7 piratesw-pi1 in ~

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01bf2cc93a71 rpi-whoami http 2 minutes ago Up 2 minutes 8000tcp whoami27d1

$ curl -4 localhost8000

Im bce5eaff8433c

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 31: Building a Raspberry PI Cluster + Docker Swarm

OH YEAH

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 32: Building a Raspberry PI Cluster + Docker Swarm

SCALE IT BACK DOWN

$ docker service scale whoami=0 whoami scaled to 0

DO THIS ON THE MANAGER PI

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 33: Building a Raspberry PI Cluster + Docker Swarm

DEPLOY YOUR OWN GO APP TO THE CLUSTER

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 34: Building a Raspberry PI Cluster + Docker Swarm

BUILD YOUR DOCKER IMAGE ON THE MANAGER PIFROM golang FROM alexellis2go-armhf175 WORKDIR gosrcwelpweather ADD gosrcwelpweather

ENV OWM_API_KEY ltinsert_api_keygt RUN go get -d -v RUN go install -v RUN go build RUN env GOOS=linux GOARCH=arm GOARM=5 go build ENTRYPOINT welpweather EXPOSE 6969

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 35: Building a Raspberry PI Cluster + Docker Swarm

BUILD THE NEW DOCKERFILE$ docker build -t willywoswelpweather Step 99 EXPOSE 6969 ---gt Running in 68d8ccb0302c ---gt 0c485fc927f9

Removing intermediate container 68d8ccb0302c

Successfully built 0c485fc927f9

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 36: Building a Raspberry PI Cluster + Docker Swarm

VERIFY THAT IMAGE IS WORKINGDo this from your host computer

telnet 1921680100 6969

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 37: Building a Raspberry PI Cluster + Docker Swarm

YOU SHOULD SEE THIS

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 38: Building a Raspberry PI Cluster + Docker Swarm

LAUNCH AND SCALE THE SERVICE$ docker service create mdash-name welpweather mdash-publish 69696969 willywoswelpweather

$ docker service scale welpweather=3

$ docker container stop fbdf88debc8f

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 39: Building a Raspberry PI Cluster + Docker Swarm

VERIFY THE SERVICE RUNS ON THE OTHER PIrsquoS$ docker service ls ID NAME MODE REPLICAS IMAGE nj4gv702ha84 whoami replicated 00 hypriotrpi-whoamilatest u7pz5yp2ebm5 welpweather replicated 33 willywoswelpweather

$ telnet 1921680101 6969

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 40: Building a Raspberry PI Cluster + Docker Swarm

OH YEAH

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 41: Building a Raspberry PI Cluster + Docker Swarm

SCALE IT BACK DOWN

$ docker service scale welpweather=0 welpweather scaled to 0

DO THIS ON THE MANAGER PI

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 42: Building a Raspberry PI Cluster + Docker Swarm

HELPFUL THINGS$ docker node ps

$ docker service ltservice-namegt logs

$ docker swarm join-token worker

$ docker service update --image hubdockercomimage service

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 43: Building a Raspberry PI Cluster + Docker Swarm

REVIEW 1) CREATED A PI CLUSTER 2) RAN A SERVICE 3) DEPLOYED OUR OWN GO APP 4) PROFIT

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet

Page 44: Building a Raspberry PI Cluster + Docker Swarm

THANK YOU

Please Sign My Guestbookhttpswills-guestbookherokuappcom

Website wosnetnet