Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
10 views12 pages

S07 Operating Docker

docker

Uploaded by

Adam Bayar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views12 pages

S07 Operating Docker

docker

Uploaded by

Adam Bayar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

Section Overview: Operating Swarm

• Service Logs
• Docker Events
• Swarm Configs
• Rolling Service Updates
• Healthchecks in Updates and Rollbacks
• Portainer Web UI
Section Requirements
• Created a 3-node (or more) Swarm with your environment of
choice
• Not all nodes are managers (mine is 1 manager and 2 workers)
• Created the Swarm Visualizer service from previous lecture
• Cleared other stacks/services/containers/volumes/networks
Run The Swarm Visualizer
• Start a service for the Docker Swarm Visualizer
• This is a useful learning graphic that shows us how tasks move
around
• https://github.com/dockersamples/docker-swarm-visualizer
• docker service create \
--name=viz \
--publish=8080:8080/tcp \
--constraint=node.role==manager \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
dockersamples/visualizer

docker service create --name=viz --publish=8080:8080/tcp --constraint=node.role==manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock dockersamples/visualizer


Service Logs
• Same as docker container logs, but aggregates all service tasks
• Can return all tasks at once, or just one task's logs
• Great for real time cli troubleshooting
• Has options for follow/tail, and other common log options
• Not for log storage, or searching, or feeding into other systems
• Doesn't work if you use --log-driver for sending logs off server
• Therefore: use for small Swarms and testing

works with json-file or journald log drivers


json-file is default driver
Service Log Examples
• Return all logs for a service
• docker service logs <servicename/id>
• Return all logs for a single task
• docker service logs <taskid>
• Return unformatted logs with no trunking
• docker service logs --raw --no-trunc <servicename/id>
• Only return last 50 log entries and all future logs
• docker service logs --tail 50 --follow <servicename/id>

cd swarm-stack-5
docker stack deploy -c example-voting-app-stack.yml vote
watch docker stack services vote (not on windows)

docker ps
docker exec $(docker ps --filter name=vote_vote -q) ./generate-some-votes.sh

docker service ls
docker service logs vote_worker
docker service ps vote_worker
docker service logs <task id>
docker service logs --tail 5 --follow vote_worker
docker service logs --raw --no-trunc vote_worker

grep logs (not on windows)


docker service logs vote_worker
docker service logs vote_worker 2>&1 | grep
docker service logs vote_worker 2>&1 | findstr
Lecture Cleanup
• Remove the stack we created

> docker stack rm vote


Docker Events
• "Actions Taken" Logs of Docker Engine and Swarm
• e.g. "network create", "service update", "container start"
• docker events received SwarmKit events in 17.06
• services/nodes/secrets/configs got create/update/remove
• Has searching (filtering) and formatting
• Limited to last 1,000 Events (no logs are stored on disk)
• Two scopes, "local" and "swarm"
• Not the same as dockerd (journald) log, also not an error log

PR of cluster events: https://github.com/moby/moby/pull/32421

https://github.com/moby/moby/issues/29548#issuecomment-268329529

https://docs.docker.com/engine/reference/commandline/events/
Docker Events Examples
• Follow future events
• docker events

• Return events from a date until now and future


• docker events --since 2017-12-01
• docker events --since 2017-12-01T12:30:00
• Return events from 30m ago until now and future
• docker events --since 30m
• docker events --since 2h10m

• Return last hour of events filtered by event name


• docker events --since 1h --filter event=start

• Only return Swarm related events for networks


• docker events --since 1h --filter scope=swarm --filter type=network

REFERENCES
https://docs.docker.com/engine/reference/commandline/events/

docker service scale viz=0

Setup three windows for three event monitors

docker service create --name nginx nginx


docker service rm nginx

Use stress example then look for "container oom" in events


docker service create --limit-memory 100M --name 100 bretfisher/stress:256m

docker service scale viz=1


Swarm Configs
• Map files/strings stored in Raft Log to any file path in tasks
• Ideal For nginx/mysql/etc. configs
• Now you don't need custom image or bind-mount to host 😨
• 17.06+ similar to Secrets but can go anywhere in container
• Immutable, so rotation process is key
• Removable once services are removed
• Strings saved to Swarm Raft Log (instant HA)
• Private keys should still use Secrets (RAM disks, enc at rest)

REFERENCES
https://docs.docker.com/engine/swarm/configs/
Swarm Config Examples
• Create a new Config from a nginx config
• docker config create nginx01 ./nginx.conf
• Creating a Service with a Config
• docker service create --config source=nginx01,target=/etc/nginx/conf.d/
default.conf
• Creating new Config to replace old
• docker config create nginx02 ./nginx.conf
• Updating Service with new Config
• docker service update --config-rm nginx01 --config-add source=nginx02,target=/etc/
nginx/conf.d/default.conf

docker stack deploy -c example-voting-app-stack.yml vote

cat nginx

docker config create vote-nginx-20171211 ./nginx-app.conf

cat example

docker service create --config source=vote-nginx-20171211,target=/etc/nginx/conf.d/default.conf -p 9000:80 --network vote_frontend --name proxy nginx

check it works on http://localhost:9000 and shows voting site

Inspect config

Try to remove used config

docker config rm vote-nginx-20171211

Inspect service with config

docker config create --label vote-nginx vote-nginx-20171212 ./nginx-app.conf

docker service update --config-rm vote-nginx-20171211 --config-add source= vote-nginx-20171212,target=/etc/nginx/conf.d/default.conf proxy


Swarm Configs in Stack Files
version: "3.3" #3.3 or higher required
services:
web:
image: nginx
configs:
- source: nginx-proxy
target: /etc/nginx/conf.d/default.conf
configs:
nginx-proxy:
file: ./nginx-app.conf
Lecture Cleanup
• Remove the stack, service and configs we created

> docker stack rm vote

> docker service rm proxy

> docker config rm vote-nginx-20171211 vote-nginx-20171212

You might also like