diff --git a/docs/index.html b/docs/index.html index e4686b08..acff56ec 100644 --- a/docs/index.html +++ b/docs/index.html @@ -105,7 +105,7 @@ Docker
Orchestration
Workshop AJ ([@s0ulshake](https://twitter.com/s0ulshake)) - Jerome ([@jpetazzo](https://twitter.com/jpetazzo)) + Jérôme ([@jpetazzo](https://twitter.com/jpetazzo)) Shawn ([@drizzt51](https://twitter.com/drizzt51)) @@ -199,6 +199,8 @@ grep '^# ' index.html | grep -v '(more on next slide) - *Services* managed with a *declarative API*
(implementing *desired state* and *reconciliation loop*) @@ -2390,7 +2393,10 @@ By default, SwarmKit does a rolling upgrade, one instance at a time. ] -(Remove `-v` if you don't like verbose things!) +Remove `-v` if you don't like verbose things. + +Shameless promo: for more Go and Docker love, check +[this blog post](http://jpetazzo.github.io/2016/09/09/go-docker/)! --- @@ -2554,7 +2560,7 @@ What we will do: - We could author a custom image bundling this configuration -- We can also pass the configuration on the command line +- We can also pass the [configuration](https://github.com/jpetazzo/orchestration-workshop/blob/master/elk/logstash.conf) on the command line .exercise[ @@ -2912,13 +2918,17 @@ class: title redis get foo ``` -- Adding a constraint caused the service to be restarted, *even if it didn't have to move*: +- Adding a constraint caused the service to be redeployed: ```bash docker service ps stateful ``` ] +Note: even if the constraint ends up being a no-op (i.e. not +moving the service), the service gets redeployed. +This ensures consistent behavior. + --- ## Setting the key again @@ -2941,117 +2951,67 @@ class: title --- -## Making sure that Redis correctly persists data - -- Before going further, we need to make sure that Redis correctly saves to disk - -.exercise[ - -- Restart the container: - ```bash - CID=$(docker ps -q --filter label=com.docker.swarm.service.name=stateful) - docker restart $CID - ``` - -- Check the `foo` key: - ```bash - redis get foo - ``` - -] - --- - -(╯°□°)╯︵ ┻━┻) - ---- - -## Instructing Redis to save data on restarts - -- The default configuration that comes with the `redis` image doesn't save on shutdown - - (See [this issue](https://github.com/docker-library/redis/issues/4) for some hints about what's happening) - -- Let's add an extra flag to enable AOF persistence - -.exercise[ - -- Add `--appendonly yes` to Redis starting flags: - ```bash - docker service update stateful --args "--appendonly yes" - ``` - -] - -Note: we can achieve the same result by enabling RDB snapshots instead. -
-See http://redis.io/topics/persistence for more details about Redis persistence. - ---- - -## Checking persistence across container restarts - -.exercise[ - -- Set the `foo` key once again: - ```bash - redis set foo bar - ``` - -- Restart the container: - ```bash - CID=$(docker ps -q --filter label=com.docker.swarm.service.name=stateful) - docker restart $CID - ``` - -- Check that `foo` is still there: - ```bash - redis get foo - ``` - -] - ---- - ## Service updates cause containers to be replaced - Let's try to make a trivial update to the service and see what happens .exercise[ +- Set a memory limit to our Redis service: + ```bash + docker service update stateful --limit-memory 100M + ``` + +- Try to get the `foo` key one more time: + ```bash + redis get foo + ``` + +] + +The key is blank again! + +--- + +## Service volumes are ephemeral by default + +- Let's highlight what's going on with volumes! + +.exercise[ + - Check the current list of volumes: ```bash docker volume ls ``` -- Set a memory limit to our Redis service: +- Carry a minor update to our Redis service: ```bash - docker service update stateful --limit-memory 100M + docker service update stateful --limit-memory 200M ``` ] -Note: all changes trigger the creation of a new task, and therefore a replacement of the existing container; +Again: all changes trigger the creation of a new task, and therefore a replacement of the existing container; even when it is not strictly technically necessary. --- -## Services volumes are ephemeral +## The data is gone again - What happened to our data? .exercise[ -- The `foo` key is (once again) gone: - ```bash - redis get foo - ``` - -- The volume has been recycled, too: +- The list of volumes is slightly different: ```bash docker volume ls ``` +- And as you can expect, the `foo` key is gone: + ```bash + redis get foo + ``` + ] --- @@ -3088,9 +3048,9 @@ Note: the `local` volume driver automatically creates volumes. redis set foo barbar ``` -- Update the service with another trivial change: +- Update the service with yet another trivial change: ```bash - docker service update stateful --limit-memory 200M + docker service update stateful --limit-memory 300M ``` - Check that `foo` is still set: @@ -3104,7 +3064,7 @@ Note: the `local` volume driver automatically creates volumes. ## Recap -- The service must commit its state to disk when being shutdown +- The service must commit its state to disk when being shutdown.red[*] (Shutdown = being sent a `TERM` signal) @@ -3116,6 +3076,9 @@ Note: the `local` volume driver automatically creates volumes. (And losing that node means losing the data, unless there are other backups) +.footnote[
.red[*]Until recently, the Redis image didn't automatically +persist data. Beware!] + --- ## Cleaning up @@ -3505,7 +3468,15 @@ class: title # Thanks!
Questions? + + +## AJ ([@s0ulshake](https://twitter.com/s0ulshake)) — Jérôme ([@jpetazzo](https://twitter.com/jpetazzo))
Shawn ([@drizzt51](https://twitter.com/drizzt51)) — Tiffany ([@tiffanyfayj](https://twitter.com/tiffanyfayj)) + +### Reminder 1: lunch will be in "Rhinelander", same floor as the tutorials. + +### Reminder 2: Shawn is doing a [4-hour version of this](http://sched.co/8Gfp) at #cdatx ([Container Days Austin](http://www.containerdaysaustin.com/2016/), October 14-15)