User Tools

Site Tools


informatica:linux:docker:red

Creamos una subred swarm por ejemplo

# docker network create --subnet=172.19.0.0/16 swarm
b61fd20f8ea5d6c53e70f938b4e1ce44333ba0fd993a333c5fb9fefc6cd2d1f3
# docker network ls

NETWORK ID          NAME                DRIVER              SCOPE
ef49af878942        bridge              bridge              local
3016c3471d38        host                host                local
e72a3fcddff2        none                null                local
b61fd20f8ea5        swarm               bridge              local
15c7084e1eea        weblogicnet         bridge              local

Miramos el detalle de la red:

# docker inspect swarm
[
    {
        "Name": "swarm",
        "Id": "b61fd20f8ea5d6c53e70f938b4e1ce44333ba0fd993a333c5fb9fefc6cd2d1f3",
        "Created": "2017-02-13T18:10:44.25361846+01:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.19.0.0/16"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

Ahora ejecutamos cada máquina con una ip:

# docker run --name swarm-nodo1 --privileged --net swarm --ip 172.19.0.101 --hostname swarm1 --add-host=swarm1:172.19.0.101 --add-host=swarm2:172.19.0.102 --add-host=swarm3:172.19.0.103 -ti swarm
# docker run --name swarm-nodo2 --privileged --net swarm --ip 172.19.0.102 --hostname swarm2 --add-host=swarm1:172.19.0.101 --add-host=swarm2:172.19.0.102 --add-host=swarm3:172.19.0.103 -ti swarm
# docker run --name swarm-nodo3 --privileged --net swarm --ip 172.19.0.103 --hostname swarm3 --add-host=swarm1:172.19.0.101 --add-host=swarm2:172.19.0.102 --add-host=swarm3:172.19.0.103 -ti swarm

Creamos swarm en el primer nodo

# docker swarm init --advertise-addr 172.19.0.101
Swarm initialized: current node (obtavwk9ypnpq20ubd54gt7me) is now a manager.

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

    docker swarm join \
    --token SWMTKN-1-5wvvfc5qpmk4avbqzv0iw1st0qxtwb15ut0phwyjgmv2iw65t7-akxww3rmtsimaihqokcgmwu7a \
    172.19.0.101:2377

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

Si hacemos docker info, vemos swarm:

# docker info
.........
Swarm: active
 NodeID: obtavwk9ypnpq20ubd54gt7me
 Is Manager: true
 ClusterID: tbzs05pa17b5vkseyzzmc2sew
 Managers: 1
 Nodes: 1
.........

Podemos ver los nodos activos:

# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
obtavwk9ypnpq20ubd54gt7me *  swarm1    Ready   Active        Leader

El * indica que actualmente estamos conectados a ese nodo

Desde el manager, sacamos el token para unir a los otros:

# docker swarm join-token worker
To add a worker to this swarm, run the following command:

  docker swarm join \
  --token SWMTKN-1-5wvvfc5qpmk4avbqzv0iw1st0qxtwb15ut0phwyjgmv2iw65t7-akxww3rmtsimaihqokcgmwu7a \
  172.19.0.101:2377

Lanzamos ese comando en los otros dos nodos y vemos que se han unido:

# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
bz11p92f0ietyc2rvv8zs63dt    swarm3    Ready   Active        
mzjrvtr4519idowp10y1lowfy    swarm2    Ready   Active        
obtavwk9ypnpq20ubd54gt7me *  swarm1    Ready   Active        Leader

Crear un servicio

https://docs.docker.com/engine/swarm/swarm-tutorial/deploy-service/

# docker service create --replicas 1 --name helloworld alpine ping docker.com
ny109vvho4z1f63lo9f2bbsb4
# docker service ls
ID            NAME        MODE        REPLICAS  IMAGE
ny109vvho4z1  helloworld  replicated  1/1       alpine:latest

Ahora miramos el servicio

https://docs.docker.com/engine/swarm/swarm-tutorial/inspect-service/

docker service inspect --pretty helloworld
  
ID:		ny109vvho4z1f63lo9f2bbsb4
Name:		helloworld
Service Mode:	Replicated
 Replicas:	1
Placement:
UpdateConfig:
 Parallelism:	1
 On failure:	pause
 Max failure ratio: 0
ContainerSpec:
 Image:		alpine:latest@sha256:dfbd4a3a8ebca874ebd2474f044a0b33600d4523d03b0df76e5c5986cb02d7e8
 Args:		ping docker.com 
Resources:
Endpoint Mode:	vip

Vemos donde corre:

# docker service ps helloworld
ID            NAME          IMAGE          NODE    DESIRED STATE  CURRENT STATE          ERROR  PORTS
l4edt3bnis27  helloworld.1  alpine:latest  swarm3  Running        Running 3 minutes ago         
informatica/linux/docker/red.txt · Last modified: 2017/02/13 20:18 by jose