Docker Swarm
Clusters Abound
signup!
getcarina.com
mycluster.rackspace.com
Login Please!
Login!
Create a cluster!
β΅
β΅
Cluster built!
π
π
Grow it
Swarm
- Many Docker Hosts, one API endpoint
- New primitives (e.g. affinities)
- Scheduling according to resource constraints
Get your Docker environment
1
2
$ ls
boatboat.zip
$ unzip boatboat.zip
Archive: boatboat.zip
extracting: boatboat/ca.pem
extracting: boatboat/README.md
extracting: boatboat/ca-key.pem
extracting: boatboat/docker.cmd
extracting: boatboat/docker.env
extracting: boatboat/docker.ps1
extracting: boatboat/cert.pem
extracting: boatboat/key.pem
$ cd boatboat/
$ source docker.env
$ docker version
Client version: 1.6.1
Client API version: 1.18
Go version (client): go1.4.2
Git commit (client): 97cd073
OS/Arch (client): darwin/amd64
Server version: swarm/0.4.0
Server API version: 1.16
Go version (server): go1.4.2
Git commit (server): d647d82
OS/Arch (server): linux/amd64
$ source docker.env
$
$ docker run -d -p 80:8080 --name whoa rackerlabs/whoa
44aff6801d136ae7ba49ad074d94a7ba94740326f8d9099d7830ec8095abdf72
whoa
80
$ docker run -d -p 80:8080 --name whoa rackerlabs/whoa
44aff6801d136ae7ba49ad074d94a7ba94740326f8d9099d7830ec8095abdf72
$ # Get a new Docker client
$ alias docker='./docker-1.6.1'
$ docker rm whoa
whoa
80
$ docker run -d -p 80:8080 --name whoa rackerlabs/whoa
44aff6801d136ae7ba49ad074d94a7ba94740326f8d9099d7830ec8095abdf72
$ docker port whoa 8080
104.130.0.119:80
$ curl 104.130.0.119:80
π Whoa! π
whoa
80
104.130.0.119
$ docker run -d -p 80:8080 --name whoa rackerlabs/whoa
44aff6801d136ae7ba49ad074d94a7ba94740326f8d9099d7830ec8095abdf72
...
$ # Now for another web head
$ docker run -d -p 80:8080 --name whoa2 rackerlabs/whoa
5e0a9815f9558c7a26a44f3bb214f241a5fbf26e01e008739dff64e39c802fce
$ docker port whoa2 8080
104.130.0.117:80
$ curl 104.130.0.117:80
π Whoa! π
whoa
80
104.130.0.119
104.130.0.117
whoa
80
Exercise:
LaunchΒ more but using the `whoa/tiny` image onΒ portΒ 8080
$ docker run -d -p 80:8080 --name whoa rackerlabs/whoa
44aff6801d136ae7ba49ad074d94a7ba94740326f8d9099d7830ec8095abdf72
...
$ # Now for another web head
$ docker run -d -p 80:8080 --name whoa2 rackerlabs/whoa
5e0a9815f9558c7a26a44f3bb214f241a5fbf26e01e008739dff64e39c802fce
$ # AND AGAIN?!?
$ docker run -d -p 80:8080 --name whoa3 rackerlabs/whoa
FATA[0000] Error response from daemon: unable to find a node
with port 80 available
whoa
80
104.130.0.119
104.130.0.117
whoa
80
$ docker ps # Your results will differ ;)
PORTS NAMES
104.130.0.117:80->8080/tcp 7b0948a3-d660-465a-b32d-5051c25184ba-n1/whoa2
104.130.0.119:80->8080/tcp 7b0948a3-d660-465a-b32d-5051c25184ba-n2/whoa
whoa
80
104.130.0.119
104.130.0.117
whoa
80
Exercise:
Swarm &
RSΒ LBs
$ docker info
Containers: 9
Images: 7
Storage Driver:
Role: primary
Strategy: spread
Filters: affinity, health, constraint, port, dependency
Nodes: 2
7b0948a3-d660-465a-b32d-5051c25184ba-n1: 104.130.0.117:42376
β Containers: 5
β Reserved CPUs: 0 / 12
β Reserved Memory: 0 B / 2.1 GiB
β Labels: executiondriver=native-0.2, kernelversion=3.12.36-2-rackos, operatingsystem=Debian GNU/Linux 7 (wheezy) (containerized), storagedriver=aufs
7b0948a3-d660-465a-b32d-5051c25184ba-n2: 104.130.0.119:42376
β Containers: 4
β Reserved CPUs: 0 / 12
β Reserved Memory: 0 B / 2.1 GiB
β Labels: executiondriver=native-0.2, kernelversion=3.12.36-2-rackos, operatingsystem=Debian GNU/Linux 7 (wheezy) (containerized), storagedriver=aufs
Execution Driver:
Kernel Version:
Operating System:
CPUs: 24
Total Memory: 4.2 GiB
Name: 1d724f443821
ID:
Http Proxy:
Https Proxy:
No Proxy:
$ docker info
Containers: 9
Images: 7
Storage Driver:
Role: primary
Strategy: spread
Filters: affinity, health, constraint, port, dependency
Nodes: 2
7b0948a3-d660-465a-b32d-5051c25184ba-n1: 104.130.0.117:42376
β Containers: 5
β Reserved CPUs: 0 / 12
β Reserved Memory: 0 B / 2.1 GiB
β Labels: executiondriver=native-0.2, kernelversion=3.12.36-2-rackos, operatingsystem=Debian GNU/Linux 7 (wheezy) (containerized), storagedriver=aufs
7b0948a3-d660-465a-b32d-5051c25184ba-n2: 104.130.0.119:42376
β Containers: 4
β Reserved CPUs: 0 / 12
β Reserved Memory: 0 B / 2.1 GiB
β Labels: executiondriver=native-0.2, kernelversion=3.12.36-2-rackos, operatingsystem=Debian GNU/Linux 7 (wheezy) (containerized), storagedriver=aufs
Execution Driver:
Kernel Version:
Operating System:
CPUs: 24
Total Memory: 4.2 GiB
Name: 1d724f443821
ID:
Http Proxy:
Https Proxy:
No Proxy:
whoa
104.130.0.117
whoa
104.130.0.119
# of
Containers
Running?
$ docker info
Containers: 9
Images: 7
Storage Driver:
Role: primary
Strategy: spread
Filters: affinity, health, constraint, port, dependency
Nodes: 2
7b0948a3-d660-465a-b32d-5051c25184ba-n1: 104.130.0.117:42376
β Containers: 5
β Reserved CPUs: 0 / 12
β Reserved Memory: 0 B / 2.1 GiB
β Labels: executiondriver=native-0.2, kernelversion=3.12.36-2-rackos, operatingsystem=Debian GNU/Linux 7 (wheezy) (containerized), storagedriver=aufs
7b0948a3-d660-465a-b32d-5051c25184ba-n2: 104.130.0.119:42376
β Containers: 4
β Reserved CPUs: 0 / 12
β Reserved Memory: 0 B / 2.1 GiB
β Labels: executiondriver=native-0.2, kernelversion=3.12.36-2-rackos, operatingsystem=Debian GNU/Linux 7 (wheezy) (containerized), storagedriver=aufs
Execution Driver:
Kernel Version:
Operating System:
CPUs: 24
Total Memory: 4.2 GiB
Name: 1d724f443821
ID:
Http Proxy:
Https Proxy:
No Proxy:
whoa
104.130.0.117
whoa
104.130.0.119
$ docker ps -a
IMAGE COMMAND PORTS NAMES
rackerlabs/whoa:latest "/whoa" 104.130.0.117:80->8080/tcp 7b0948a3-d660-465a-b32d-5051c25184ba-n1/whoa2
rackerlabs/whoa:latest "/whoa" 104.130.0.119:80->8080/tcp 7b0948a3-d660-465a-b32d-5051c25184ba-n2/whoa
cirros:latest "/bin/bash" 7b0948a3-d660-465a-b32d-5051c25184ba-n1/goofy_hoover
swarm:latest "/swarm manage -H=tc 2375/tcp, 104.130.0.119:2376->2376/tcp 7b0948a3-d660-465a-b32d-5051c25184ba-n2/swarm-manager
swarm:latest "/swarm join --addr= 2375/tcp 7b0948a3-d660-465a-b32d-5051c25184ba-n2/swarm-agent
cirros:latest "/sbin/init" 7b0948a3-d660-465a-b32d-5051c25184ba-n2/swarm-data
swarm:latest "/swarm manage -H=tc 2375/tcp, 104.130.0.117:2376->2376/tcp 7b0948a3-d660-465a-b32d-5051c25184ba-n1/swarm-manager
swarm:latest "/swarm join --addr= 2375/tcp 7b0948a3-d660-465a-b32d-5051c25184ba-n1/swarm-agent
cirros:latest "/sbin/init" 7b0948a3-d660-465a-b32d-5051c25184ba-n1/swarm-data
What are those?
(whiteboard time)
Exercise:
Launch theΒ `whoa/tiny` image with constraints.
Swarm Workshop on Carina
By Kyle Kelley
Swarm Workshop on Carina
- 986