2016-11-19

Docker Swarm


Docker Swarm

What's New in Docker 1.12
Overview of new features
  • Orchestration
    • Swarm mode
    • Docker services
    • Secure by default
    • Networking
  • Live Restore
  • Container Healthchecks
  • Plugin Improvements
    http://forum.slitaz.org/topic/slitaz-x86_64#post-43393

Swarm mode overview
https://docs.docker.com/engine/swarm/
Docker Engine 1.12 includes swarm mode for natively managing a cluster of Docker Engines called a swarm. Use the Docker CLI to create a swarm, deploy application services to a swarm, and manage swarm behavior.

1. Setup docker engine (docker)
root@slitaz:~# docker-machine create -d virtualbox default


root@slitaz:~# docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/root/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env default)

root@slitaz:~# eval $(docker-machine env default)

root@slitaz:~# docker-machine ls
NAME    ACTIVE   DRIVER       STATE     URL                        SWARM   DOCKER    ERRORS
default   *      virtualbox   Running   tcp://192.168.99.100:2376          v1.12.3   

root@slitaz:~# docker-machine create -d virtualbox worker2
[..]

root@slitaz:~# docker-machine create -d virtualbox worker3
[..]

root@slitaz:~# docker-machine ls
NAME     ACTIVE  DRIVER       STATE     URL                       SWARM   DOCKER    ERRORS
default   *      virtualbox   Running   tcp://192.168.99.100:2376         v1.12.3   
worker2   -      virtualbox   Running   tcp://192.168.99.101:2376         v1.12.3   
worker3   -      virtualbox   Running   tcp://192.168.99.102:2376         v1.12.3   
root@slitaz:~#


2. Create a swarm
Manager / Leader : slitaz
tux@slitaz:~$ docker swarm init --advertise-addr 192.168.1.30:2377
Swarm initialized: current node (7k82hqkla3pfx2l5n1mg86nqz) is now a manager.


To add a worker to this swarm, run the following command:

docker swarm join \
--token SWMTKN-1-0j1kwrl6tx3zujd1b5unnu6kxn3sn1zylgkueq4e10t4w8mxzc-8fzj4535sg0lttajyuw431rhq \
192.168.1.30:2377

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

tux@slitaz:~$ docker node ls
ID                          HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
7k82hqkla3pfx2l5n1mg86nqz *  slitaz   Ready   Active        Leader

tux@slitaz:~$ docker info | grep -A16 Swarm
Swarm: active
NodeID: 7k82hqkla3pfx2l5n1mg86nqz
Is Manager: true
ClusterID: dfg1s9cfwoi0ep88d36c44c2s
Managers: 1
Nodes: 1
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Heartbeat Tick: 1
Election Tick: 3
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Node Address: 192.168.1.30
tux@slitaz:~$

Add nodes to the swarm
node : worker2
tux@slitaz:~$ docker-machine ssh worker2

docker@worker2:~$ docker swarm join \
>--token SWMTKN-1-0j1kwrl6tx3zujd1b5unnu6kxn3sn1zylgkueq4e10t4w8mxzc-8fzj4535sg0lttajyuw431rhq \
> 192.168.1.30:2377
This node joined a swarm as a worker.

docker@worker2:~$ docker info | grep -E 'Swarm|Node|Name|Manager|provider'
Swarm: active
NodeID: 6l6q31l3ojjanmbrkdsaydcd3
Is Manager: false
Node Address: 10.0.2.15
Name: worker2
provider=virtualbox

node : worker3
tux@slitaz:~$ docker-machine ssh worker3

docker@worker3:~$ docker swarm join \
> --token SWMTKN-1-0j1kwrl6tx3zujd1b5unnu6kxn3sn1zylgkueq4e10t4w8mxzc-8fzj4535sg0lttajyuw431rhq \
> 192.168.1.30:2377
This node joined a swarm as a worker.

docker@worker3:~$ docker info | grep -E 'Swarm|Node|Name|Manager|provider'
Swarm: active
NodeID: d9acvt55txmtru7kx4c68vj4k
Is Manager: false
Node Address: 10.0.2.15
Name: worker3
provider=virtualbox

node : default
tux@slitaz:~$ docker-machine ssh default

docker@default:~$ docker swarm join \
> --token SWMTKN-1-0j1kwrl6tx3zujd1b5unnu6kxn3sn1zylgkueq4e10t4w8mxzc-8fzj4535sg0lttajyuw431rhq \
> 192.168.1.30:2377
This node joined a swarm as a worker.

docker@default:~$ docker info | grep -E 'Swarm|Node|Name|Manager|provider'
Swarm: active
NodeID: 5f0tcycycbvld9k9o2lw7zkr3
Is Manager: false
Node Address: 10.0.2.15
Name: default
provider=virtualbox


3. Four networked host machines
tux@slitaz:~$ docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
5f0tcycycbvld9k9o2lw7zkr3    default   Ready   Active       
6l6q31l3ojjanmbrkdsaydcd3    worker2   Ready   Active 
7k82hqkla3pfx2l5n1mg86nqz *  slitaz    Ready   Active        Leader
d9acvt55txmtru7kx4c68vj4k    worker3   Ready   Active           
tux@slitaz:~$

4. Deploy a service to the swarm
tux@slitaz:~$ docker service create --replicas 1 --name helloworld slitaz/slitaz-base ping docker.com
cajm42r93yb27tft0e6c7qxpw
The docker service create command creates the service.
  • The --name flag names the service helloworld.
  • The --replicas flag specifies the desired state of 1 running instance.
  • The arguments slitaz/slitaz-base ping docker.com define the service as
    an SliTaz Linux container that executes the command ping docker.com.
tux@slitaz:~$ docker service ls ID NAME REPLICAS IMAGE COMMAND cajm42r93yb2 helloworld 1/1 slitaz/slitaz-base ping docker.com tux@slitaz:~$ docker service ps helloworld ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR 002tslyqae2iapb6g56fqd7ax helloworld.1 slitaz/slitaz-base slitaz Running Running 47 seconds ago tux@slitaz:~$ docker service inspect --pretty helloworld ID: cajm42r93yb27tft0e6c7qxpw Name: helloworld Mode: Replicated Replicas: 1 Placement: UpdateConfig: Parallelism: 1 On failure: pause ContainerSpec: Image: slitaz/slitaz-base Args: ping docker.com Resources: tux@slitaz:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 871129d798d0 slitaz/slitaz-base:latest "ping docker.com" About a minute ago Up About a minute helloworld.1.002tslyqae2iapb6g56fqd7ax tux@slitaz:~$


5. Scale the service in the swarm
tux@slitaz:~$ docker service scale helloworld=6
helloworld scaled to 6

tux@slitaz:~$ docker service ls
ID            NAME        REPLICAS  IMAGE               COMMAND
cajm42r93yb2  helloworld  6/6       slitaz/slitaz-base  ping docker.com

tux@slitaz:~$ docker service ps helloworld
ID                         NAME          IMAGE               NODE   DESIRED STATE  CURRENT STATE           ERROR
002tslyqae2iapb6g56fqd7ax  helloworld.1  slitaz/slitaz-base  slitaz   Running      Running 3 minutes  ago   
58j491vemqivnwrqaz81pq9nb  helloworld.2  slitaz/slitaz-base  worker2  Running      Running 20 seconds ago  
3t58mrccan0nflvoar6k3ffaq  helloworld.3  slitaz/slitaz-base  default  Running      Running 21 seconds ago  
e54f675l6ur7lc2k4xswltt98  helloworld.4  slitaz/slitaz-base  worker3  Running      Running 21 seconds ago  
dydeu3rwuttjrc6rh8ke3d1hf  helloworld.5  slitaz/slitaz-base  worker3  Running      Running 21 seconds ago  
e8m5wdmesa16pwtme10t1lrju  helloworld.6  slitaz/slitaz-base  slitaz   Running      Running 24 seconds ago  

tux@slitaz:~$ docker ps
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS           PORTS                 NAMES
ca20de8a3bca        slitaz/slitaz-base:latest   "ping docker.com"   37 seconds ago      Up 35 seconds                          helloworld.6.e8m5wdmesa16pwtme10t1lrju
871129d798d0        slitaz/slitaz-base:latest   "ping docker.com"   3 minutes ago       Up 3 minutes                           helloworld.1.002tslyqae2iapb6g56fqd7ax
tux@slitaz:~$


6. Node Failure
tux@slitaz:~$ docker-machine ssh worker2

docker@worker2:~$ docker swarm leave
Node left the swarm.

tux@slitaz:~$ docker node ls
ID                           HOSTNAME    STATUS  AVAILABILITY  MANAGER STATUS
5f0tcycycbvld9k9o2lw7zkr3    default     Ready   Active       
6l6q31l3ojjanmbrkdsaydcd3    worker2    Down   Active  
7k82hqkla3pfx2l5n1mg86nqz *  slitaz      Ready   Active        Leader
d9acvt55txmtru7kx4c68vj4k    worker3     Ready   Active       
tux@slitaz:~$

tux@slitaz:~$ docker service ps helloworld
ID                         NAME              IMAGE               NODE     DESIRED STATE  CURRENT STATE       ERROR
002tslyqae2iapb6g56fqd7ax  helloworld.1      slitaz/slitaz-base  slitaz   Running        Running 26 minutes ago  
106h3vekgktnm2qhklmh7fu3a  helloworld.2      slitaz/slitaz-base  default  Running        Running 31 seconds ago  
58j491vemqivnwrqaz81pq9nb  \_ helloworld.2   slitaz/slitaz-base  worker2 Shutdown      Running 23 minutes ago  
3t58mrccan0nflvoar6k3ffaq  helloworld.3      slitaz/slitaz-base  default  Running        Running 23 minutes ago  
e54f675l6ur7lc2k4xswltt98  helloworld.4      slitaz/slitaz-base  worker3  Running        Running 23 minutes ago  
dydeu3rwuttjrc6rh8ke3d1hf  helloworld.5      slitaz/slitaz-base  worker3  Running        Running 23 minutes ago  
e8m5wdmesa16pwtme10t1lrju  helloworld.6      slitaz/slitaz-base  slitaz   Running        Running 23 minutes ago  

tux@slitaz:~$ docker service ls
ID            NAME        REPLICAS  IMAGE               COMMAND
cajm42r93yb2  helloworld  6/6       slitaz/slitaz-base  ping docker.com


7. Update the service in the swarm
tux@slitaz:~$ docker service update --replicas 10 helloworld
helloworld

tux@slitaz:~$ docker service ls
ID            NAME        REPLICAS  IMAGE               COMMAND
cajm42r93yb2  helloworld  10/10     slitaz/slitaz-base  ping docker.com

tux@slitaz:~$ docker service ps helloworld
ID                         NAME              IMAGE               NODE     DESIRED STATE  CURRENT STATE       ERROR
002tslyqae2iapb6g56fqd7ax  helloworld.1      slitaz/slitaz-base  slitaz   Running        Running 31 minutes ago  
106h3vekgktnm2qhklmh7fu3a  helloworld.2      slitaz/slitaz-base  default  Running        Running 5  minutes ago   
58j491vemqivnwrqaz81pq9nb  \_ helloworld.2   slitaz/slitaz-base  worker2 Shutdown      Running 28 minutes ago  
3t58mrccan0nflvoar6k3ffaq  helloworld.3      slitaz/slitaz-base  default  Running        Running 28 minutes ago  
e54f675l6ur7lc2k4xswltt98  helloworld.4      slitaz/slitaz-base  worker3  Running        Running 28 minutes ago  
dydeu3rwuttjrc6rh8ke3d1hf  helloworld.5      slitaz/slitaz-base  worker3  Running        Running 28 minutes ago  
e8m5wdmesa16pwtme10t1lrju  helloworld.6      slitaz/slitaz-base  slitaz   Running        Running 28 minutes ago  
8xwx4qqtuelrw6ab1uk6epgoz  helloworld.7      slitaz/slitaz-base  worker3  Running        Running 31 seconds ago  
dzd1fbsvfphkk9z1uik0y87l9  helloworld.8      slitaz/slitaz-base  default  Running        Running 31 seconds ago  
0x5gk6gaggltd25uadol6sf8l  helloworld.9      slitaz/slitaz-base  slitaz   Running        Running 31 seconds ago  
18hngsz3uuzsg7pwe6tyf6jnl  helloworld.10     slitaz/slitaz-base  worker3  Running        Running 30 seconds ago  

tux@slitaz:~$ docker ps
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS          PORTS                    NAMES
c1d6ccc0fc66        slitaz/slitaz-base:latest   "ping docker.com"   50 seconds ago      Up 48 seconds                            helloworld.9.0x5gk6gaggltd25uadol6sf8l
98021375dad6        manomarks/visualizer        "npm start"         18 minutes ago      Up 18 minutes   0.0.0.0:8080->8080/tcp   nostalgic_turing
ca20de8a3bca        slitaz/slitaz-base:latest   "ping docker.com"   29 minutes ago      Up 29 minutes                            helloworld.6.e8m5wdmesa16pwtme10t1lrju
871129d798d0        slitaz/slitaz-base:latest   "ping docker.com"   32 minutes ago      Up 32 minutes                            helloworld.1.002tslyqae2iapb6g56fqd7ax
tux@slitaz:~$


8. Delete the service running on the swarm
tux@slitaz:~$ docker service rm helloworld
helloworld

tux@slitaz:~$ docker service ps helloworld
Error: No such service: helloworld


Ref:
swarm mode tutorial
https://docs.docker.com/engine/swarm/swarm-tutorial/




2016-11-17

2016-11-11

Docker-Tag


Docker-Tag


1.
slitaz/slitaz-base
https://hub.docker.com/r/slitaz/slitaz-base/tags/

Tag Name        Compressed Size     Last Updated
2.19            4 MB                3 hours ago
latest          4 MB                3 hours ago
2.13            4 MB                a month ago


2.
tux@slitaz:~$ docker run -it slitaz/slitaz-base:2.13
Unable to find image 'slitaz/slitaz-base:2.13' locally
2.13: Pulling from slitaz/slitaz-base
d1d4bb9c1108: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:e348a413422a7edd5057ffeeb6dc230fb49c913fee87aa41f1eabed9b3d8688d
Status: Downloaded newer image for slitaz/slitaz-base:2.13

root@09ae98ea7ee0:/# tazpkg -l

List of all installed packages
================================================================================
busybox                 1.21.1            base-system
dialog                  1.1-20110707      base-system
dropbear                2013.60           security
gcc-lib-base            4.6.3             development
gettext-base            0.18.3            base-system
glibc-base              2.13              base-system
nano                    2.2.6             utilities
ncurses                 5.9               base-system
ncurses-common          5.9               base-system
ncursesw                5.9               base-system
retawq                  0.2.6c            network
slitaz-base-files       5.4.2             base-system
slitaz-boot-scripts     5.3.3             base-system
tazpkg                  5.1               base-system
util-linux-blkid        2.21.1            base-system
util-linux-uuid         2.21.1            base-system
ytree                   1.97              utilities
zlib                    1.2.8             base-system
================================================================================
18 packages installed.

root@09ae98ea7ee0:/# /lib64/libc.so.6
GNU C Library stable release version 2.13, by Roland McGrath et al.
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.6.3.
Compiled on a Linux 3.2.14 system on 2013-12-28.

Available extensions:
crypt add-on version 2.1 by Michael Glad and others
GNU Libidn by Simon Josefsson
Native POSIX Threads Library by Ulrich Drepper et al
BIND-8.2.3-T5B
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
http://www.gnu.org/software/libc/bugs.html

root@09ae98ea7ee0:/# exit
tux@slitaz:~$


3.
tux@slitaz:~$ docker run -it slitaz/slitaz-base:2.19
Unable to find image 'slitaz/slitaz-base:2.19' locally
2.19: Pulling from slitaz/slitaz-base
986f76552751: Pull complete
Digest: sha256:da483e839a6ab53e68c48dab8449b1fb6ad2f6167b5c894fdf3074bca1cca774
Status: Downloaded newer image for slitaz/slitaz-base:2.19

root@2b3c5287b346:/# /lib64/libc.so.6
GNU C Library (GNU libc) stable release version 2.19, by Roland McGrath et al.
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.9.2.
Compiled on a Linux 3.16.36 system on 2016-09-08.

Available extensions:
crypt add-on version 2.1 by Michael Glad and others
GNU Libidn by Simon Josefsson
Native POSIX Threads Library by Ulrich Drepper et al
BIND-8.2.3-T5B
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
http://www.gnu.org/software/libc/bugs.html

root@2b3c5287b346:/# tazpkg -l

List of all installed packages
================================================================================
busybox                            1.23.2            base-system
gettext-base                       0.19.4            base-system
glibc-base                         2.19              base-system
ncurses-common                     5.9               base-system
slitaz-base-files                  309               base-system
tazpkg                             5.3.3             base-system
================================================================================
6 packages installed.

4.
root@2b3c5287b346:/# exit
tux@slitaz:~$ docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
slitaz/slitaz-base   2.19                50236ce3c843        3 hours ago         7.789 MB
slitaz/slitaz-base   latest              50236ce3c843        3 hours ago         7.789 MB
slitaz/slitaz-base   2.13                88ade07d3a4d        19 months ago       8.778 MB
tux@slitaz:~$