Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
docker_advanced_install_swarm_intro [2020/01/24 19:32] – created andonovj | docker_advanced_install_swarm_intro [2020/03/09 12:18] (current) – [Create service] andonovj | ||
---|---|---|---|
Line 10: | Line 10: | ||
{{ : | {{ : | ||
+ | |||
+ | =====Setup===== | ||
+ | Let's set it up. | ||
+ | We will have 3 servers: | ||
+ | |||
+ | * 1 Manager | ||
+ | * 2 Workers | ||
+ | |||
+ | ====Automatic==== | ||
+ | You can see the automatic creation in the Vagrant section: [[vagrant_docker_install|Multiple Servers Configuration with Vagrant]] | ||
+ | |||
+ | After the setup is done, please be sure that workers, have joined, we can create the service as follows: | ||
+ | |||
+ | ====Manual==== | ||
+ | The creation of the VMs and installation of docker-ce will not be discussed as it has been done in at least 10 other sections. | ||
+ | So let's check how to setup manager and 2 workers: | ||
+ | |||
+ | ===Initiation=== | ||
+ | The initiation of the Swarm is done from one of the managers as follow: | ||
+ | < | ||
+ | docker swarm init --listen-addr 10.100.199.200: | ||
+ | </ | ||
+ | |||
+ | That command will initialize a swarm with 1 manager who will listen on IP: 10.100.199.200: | ||
+ | |||
+ | ===Addition=== | ||
+ | To join a swarm a server must have the swarm' | ||
+ | |||
+ | < | ||
+ | [root@mgr1 ~]# docker swarm join-token manager | ||
+ | To add a manager to this swarm, run the following command: | ||
+ | |||
+ | docker swarm join --token SWMTKN-1-4mqe4htimsl9wrlzstzx6c18qmibjfjuuihdp3o91pnmssbvml-69b13glzhdgfzh58hbg7jwn69 10.100.199.200: | ||
+ | |||
+ | [root@mgr1 ~]# docker swarm join-token worker | ||
+ | To add a worker to this swarm, run the following command: | ||
+ | |||
+ | docker swarm join --token SWMTKN-1-4mqe4htimsl9wrlzstzx6c18qmibjfjuuihdp3o91pnmssbvml-1h1yrqixgrme7aypq6c4m0npj 10.100.199.200: | ||
+ | |||
+ | [root@mgr1 ~]# | ||
+ | |||
+ | </ | ||
+ | |||
+ | Now, it is good idea to ALWAYS add the advertise and listener address to the server: | ||
+ | |||
+ | Manually, workers and manager can be joined to the swarm as follows: | ||
+ | |||
+ | < | ||
+ | docker swarm join --token SWMTKN-1-4mqe4htimsl9wrlzstzx6c18qmibjfjuuihdp3o91pnmssbvml-1h1yrqixgrme7aypq6c4m0npj \ | ||
+ | manager_advertise_ip: | ||
+ | --advertise-addr worker_advert_ip_addr: | ||
+ | --listener-addr worker_listen_ip_addr: | ||
+ | </ | ||
+ | |||
+ | Insert the correct token depending on, if you are adding worker or a manager. The above is for worker. | ||
+ | |||
+ | =====Create service===== | ||
+ | The creation of the service is rather easy: | ||
+ | |||
+ | <sxh bash> | ||
+ | [root@mgr1 ~]# docker service create --name httpDemoService --replicas 3 -p 80:1234 andonovj/ | ||
+ | nz82mserbonjcoccp7iir7hfn | ||
+ | overall progress: 3 out of 3 tasks | ||
+ | 1/3: running | ||
+ | 2/3: running | ||
+ | 3/3: running | ||
+ | verify: Service converged | ||
+ | [root@mgr1 ~]# docker service ls | ||
+ | ID NAME MODE REPLICAS | ||
+ | q8s7iiv4rwu7 | ||
+ | [root@mgr1 ~]# | ||
+ | [root@mgr1 ~]# | ||
+ | [root@mgr1 ~]# | ||
+ | [root@mgr1 ~]# | ||
+ | [root@mgr1 ~]# docker node ls | ||
+ | ID HOSTNAME | ||
+ | occzvuwmny5rm8x8an4bctdc1 * | ||
+ | 7oubfm1qdun533xw9s14lt3pu | ||
+ | sdcosdbt1f94rrvbr8m9ng30s | ||
+ | [root@mgr1 ~]# | ||
+ | [root@mgr1 ~]# docker service ps httpDemoService | ||
+ | ID NAME IMAGE NODE DESIRED STATE | ||
+ | avcanadogs3e | ||
+ | 6pgfba2xdg0q | ||
+ | me2174rye7nu | ||
+ | [root@mgr1 ~]# | ||
+ | |||
+ | </ | ||
+ | |||
+ |