您的位置:首页 > 运维架构 > Docker

docker swarm集群安装

2017-06-24 10:15 330 查看
1.环境准备

iphostname
192.168.1.108master
192.168.1.109slave1
默认的镜像仓库是docker hub

2.安装docker

yum install docker

启动docker,验证是否安装成功,

systemctl restart docke

docker version



3.安装 docker swarm

[root@master ~]# docker swarm init --advertise-addr 192.168.1.108
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
[root@master ~]# systemctl start docker.service
[root@master ~]# docker swarm init --advertise-addr 192.168.1.108
Swarm initialized: current node (4nsxcqtrorpaxj516i4157xui) is now a manager.

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

docker swarm join \
--token SWMTKN-1-4gr2j6tq4rj2s8qwty8keiffytp4dp9odqzg15j3ywwuzop3jd-64bap6fe721fzbtjqjnwwprom \
192.168.1.108:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
[root@master ~]# docker info
...
Swarm: active
NodeID: 4nsxcqtrorpaxj516i4157xui
Is Manager: true
ClusterID: f0ybgw82rzwrssb8tu3o8svju
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.108
...
[root@master ~]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
4nsxcqtrorpaxj516i4157xui *  master    Ready   Active        Leader


4.加入节点

[root@slave1 ~]# docker swarm join \
>     --token SWMTKN-1-4gr2j6tq4rj2s8qwty8keiffytp4dp9odqzg15j3ywwuzop3jd-64bap6fe721fzbtjqjnwwprom \
>     192.168.1.108:2377
This node joined a swarm as a worker.

[root@master ~]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
4nsxcqtrorpaxj516i4157xui *  master    Ready   Active        Leader
e5wtqee69oe08i1zk28z4y2oa    slave1    Ready   Active
[root@master ~]# docker info
...
Swarm: active
NodeID: 4nsxcqtrorpaxj516i4157xui
Is Manager: true
ClusterID: f0ybgw82rzwrssb8tu3o8svju
Managers: 1
Nodes: 2
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Heartbeat Tick: 1
Election Tick: 3
...


5.查看manager和node的token值

[root@master ~]# docker  swarm join-token manager
To add a manager to this swarm, run the following command:

docker swarm join \
--token SWMTKN-1-4gr2j6tq4rj2s8qwty8keiffytp4dp9odqzg15j3ywwuzop3jd-0gj34e7fvqz22vgli4f1pg9q9 \
192.168.1.108:2377

[root@master ~]# docker  swarm join-token worker
To add a worker to this swarm, run the following command:

docker swarm join \
--token SWMTKN-1-4gr2j6tq4rj2s8qwty8keiffytp4dp9odqzg15j3ywwuzop3jd-64bap6fe721fzbtjqjnwwprom \
192.168.1.108:2377


6.docker servie的使用

[root@master ~]# docker service create --replicas 1 --name nginxqinzhao nginx
3yirlwsspt6oi3i8chz9hj1sk

[root@master ~]# docker service ls
ID            NAME          REPLICAS  IMAGE  COMMAND
3yirlwsspt6o  nginxqinzhao  1/1       nginx

[root@master ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
618d0364f9b1        nginx:latest        "nginx -g 'daemon off"   4 minutes ago       Up 4 minutes        80/tcp              nginxqinzhao.1.a3y4fjb7gdeqzyzsn3d104sm7

[root@master ~]# docker service scale nginxqinzhao=2
nginxqinzhao scaled to 2

这个可能要过一段时间
[root@master ~]# docker service ls
ID            NAME          REPLICAS  IMAGE  COMMAND
3yirlwsspt6o  nginxqinzhao  2/2       nginx
[root@master ~]# docker service ps nginxqinzhao
ID                         NAME                IMAGE  NODE    DESIRED STATE  CURRENT STATE            ERROR
a3y4fjb7gdeqzyzsn3d104sm7  nginxqinzhao.1      nginx  master  Running        Running 10 minutes ago
0nqhsurr9i2s7oy1eqqftezer   \_ nginxqinzhao.1  nginx  master  Shutdown       Complete 10 minutes ago
46qh0ktmhicflwnefi0kl2ps9  nginxqinzhao.2      nginx  slave1  Running        Running 2 minutes ago

root@slave1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
628a6d72ad67        nginx:latest        "nginx -g 'daemon off"   2 minutes ago       Up 2 minutes        80/tcp              nginxqinzhao.2.46qh0ktmhicflwnefi0kl2ps9

[root@master ~]# docker service scale nginxqinzhao=0
nginxqinzhao scaled to 0
[root@master ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@master ~]# docker service ls
ID            NAME          REPLICAS  IMAGE  COMMAND
3yirlwsspt6o  nginxqinzhao  0/0       nginx
[root@master ~]#

root@slave1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

[root@master ~]# docker service rm nginxqinzhao
nginxqinzhao
[root@master ~]# docker service ls
ID  NAME  REPLICAS  IMAGE  COMMAND

root@master ~]# docker service ps tomcatqinzhao
ID                         NAME             IMAGE     NODE    DESIRED STATE  CURRENT STATE           ERROR
5jubgv89xkj40uuusidae04yb  tomcatqinzhao.1  tomcat:6  master  Running        Running 3 minutes ago
4b6hvh52m3kban314o427rg4r  tomcatqinzhao.2  tomcat:6  slave1  Running        Running 12 seconds ago

[root@slave1 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/tomcat    6                   0694d09013e2        2 weeks ago         355.1 MB
docker.io/nginx     latest              958a7ae9e569        3 weeks ago         109.4 MB

[root@master ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/tomcat    6                   0694d09013e2        2 weeks ago         355.1 MB
docker.io/nginx     latest              958a7ae9e569        3 weeks ago         109.4 MB

[root@master ~]# docker service ps tomcatqinzhao
ID                         NAME                 IMAGE     NODE    DESIRED STATE  CURRENT STATE                ERROR
0j4vrxnjhoic3ycpomelil0d3  tomcatqinzhao.1      tomcat:8  master  Running        Running 9 seconds ago
5jubgv89xkj40uuusidae04yb   \_ tomcatqinzhao.1  tomcat:6  master  Shutdown       Shutdown 34 seconds ago
8vzitc0p1zdcgqla1l5tawe1z  tomcatqinzhao.2      tomcat:8  slave1  Running        Running 37 seconds ago
4b6hvh52m3kban314o427rg4r   \_ tomcatqinzhao.2  tomcat:6  slave1  Shutdown       Shutdown about a minute ago


7.docker swarm network

[root@master ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
cf52809866e0        bridge              bridge              local
6ced1b95e1c0        docker_gwbridge     bridge              local
b2c5a7968ea6        host                host                local
8azaxj4t7055        ingress             overlay             swarm
e326d6c220ec        none                null                local


新建service(不带-p参数)使用name=bridge网桥;

新建service(带-p参数)使name=ingress网桥。

容器间互通需使用overlay模式,所以新建一个overlay的网桥。

[root@master ~]# docker network create -d overlay --subnet 10.254.0.0/16 --gateway 10.254.0.1 test00
7b1dv1o8htyb5nccs7mvni9k4

[root@master ~]# docker service create --replicas 2 --name tomcat01 --network test00 tomcat:8
9fu81tdci7xmktdfe9r1zctl6

[root@master ~]# docker service create --replicas 2 --name tomcat02 --network test00 tomcat:8
3ad0qji2ibcvjdpn49p5n099h

[root@master ~]# docker service ls
ID            NAME      REPLICAS  IMAGE     COMMAND
3ad0qji2ibcv  tomcat02  2/2       tomcat:8
9fu81tdci7xm  tomcat01  2/2       tomcat:8

[root@master ~]# docker exec -it d8fc90b685e3 /bin/bash
root@d8fc90b685e3:/usr/local/tomcat# ll
bash: ll: command not found
root@d8fc90b685e3:/usr/local/tomcat# l
bash: l: command not found
root@d8fc90b685e3:/usr/local/tomcat# ls
LICENSE  NOTICE  RELEASE-NOTES  RUNNING.txt  bin  conf  include  lib  logs  native-jni-lib  temp  webapps  work
root@d8fc90b685e3:/usr/local/tomcat# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
31: eth0@if32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default
link/ether 02:42:0a:fe:00:06 brd ff:ff:ff:ff:ff:ff
inet 10.254.0.6/16 scope global eth0
valid_lft forever preferred_lft forever
inet 10.254.0.5/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:aff:fefe:6/64 scope link
valid_lft forever preferred_lft forever
33: eth1@if34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:12:00:04 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.4/16 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe12:4/64 scope link
valid_lft forever preferred_lft forever
root@d8fc90b685e3:/usr/local/tomcat# cat /etc/host
cat: /etc/host: No such file or directory
root@d8fc90b685e3:/usr/local/tomcat# cat /etc/hosts
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.254.0.6  d8fc90b685e3
172.18.0.4  d8fc90b685e3
root@d8fc90b685e3:/usr/local/tomcat# cat /etc/
Display all 104 possibilities? (y or n)
root@d8fc90b685e3:/usr/local/tomcat# cat /etc/resolv.conf
search DHCP HOST
nameserver 127.0.0.11
options ndots:0
root@d8fc90b685e3:/usr/local/tomcat# ping tomcat01
PING tomcat01 (10.254.0.2): 56 data bytes
64 bytes from 10.254.0.2: icmp_seq=0 ttl=64 time=0.156 ms
64 bytes from 10.254.0.2: icmp_seq=1 ttl=64 time=0.102 ms
64 bytes from 10.254.0.2: icmp_seq=2 ttl=64 time=0.101 ms
64 bytes from 10.254.0.2: icmp_seq=3 ttl=64 time=0.102 ms
^C--- tomcat01 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.101/0.115/0.156/0.024 ms
root@d8fc90b685e3:/usr/local/tomcat# ping tomcat02
PING tomcat02 (10.254.0.5): 56 data bytes
64 bytes from 10.254.0.5: icmp_seq=0 ttl=64 time=0.046 ms
64 bytes from 10.254.0.5: icmp_seq=1 ttl=64 time=0.087 ms
64 bytes from 10.254.0.5: icmp_seq=2 ttl=64 time=0.079 ms
64 bytes from 10.254.0.5: icmp_seq=3 ttl=64 time=0.077 ms
^C--- tomcat02 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.046/0.072/0.087/0.000 ms


外部访问容器

[root@master ~]# docker service create --replicas 1 --name qinzhao -p 9909:8080 tomcat:8
08htoygq5jz1djtpl9v87oiwg
[root@master ~]# docker service ps qinzhao
ID                         NAME       IMAGE     NODE    DESIRED STATE  CURRENT STATE           ERROR
4hjmqswgil07ld38z6krwmjwq  qinzhao.1  tomcat:8  slave1  Running        Running 47 seconds ago






7.node去激活(drain)

[root@master ~]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
4nsxcqtrorpaxj516i4157xui *  master    Ready   Active        Leader
e5wtqee69oe08i1zk28z4y2oa    slave1    Ready   Active

[root@master ~]# docker service ls
ID            NAME      REPLICAS  IMAGE     COMMAND
08htoygq5jz1  qinzhao   1/1       tomcat:8
3ad0qji2ibcv  tomcat02  2/2       tomcat:8
9fu81tdci7xm  tomcat01  2/2       tomcat:8
[root@master ~]# docker service ps qinzhao
ID                         NAME       IMAGE     NODE    DESIRED STATE  CURRENT STATE           ERROR
4hjmqswgil07ld38z6krwmjwq  qinzhao.1  tomcat:8  slave1  Running        Running 18 minutes ago
[root@master ~]# docker service ps tomcat02
ID                         NAME        IMAGE     NODE    DESIRED STATE  CURRENT STATE           ERROR
4ejujcdpa2jeaf0l1f3pz23zm  tomcat02.1  tomcat:8  master  Running        Running 36 minutes ago
275lcqdccaq46ar0tz63cleef  tomcat02.2  tomcat:8  slave1  Running        Running 36 minutes ago

[root@master ~]# docker node update --availability drain slave1
slave1
[root@master ~]# docker service ps tomcat02
ID                         NAME            IMAGE     NODE    DESIRED STATE  CURRENT STATE           ERROR
4ejujcdpa2jeaf0l1f3pz23zm  tomcat02.1      tomcat:8  master  Running        Running 37 minutes ago
0p04omx9d3fia6xqgqmhf385d  tomcat02.2      tomcat:8  master  Running        Running 1 seconds ago
275lcqdccaq46ar0tz63cleef   \_ tomcat02.2  tomcat:8  slave1  Shutdown       Shutdown 3 seconds ago

[root@master ~]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
4nsxcqtrorpaxj516i4157xui *  master    Ready   Active        Leader
e5wtqee69oe08i1zk28z4y2oa    slave1    Ready   Drain

[root@master ~]# docker node update --availability active slave1
slave1
[root@master ~]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
4nsxcqtrorpaxj516i4157xui *  master    Ready   Active        Leader
e5wtqee69oe08i1zk28z4y2oa    slave1    Ready   Active


8.node角色的升级和降级(promote/demote)

[root@master ~]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
4nsxcqtrorpaxj516i4157xui *  master    Ready   Active        Leader
e5wtqee69oe08i1zk28z4y2oa    slave1    Ready   Active
[root@master ~]# docker node promote slave1
Node slave1 promoted to a manager in the swarm.
[root@master ~]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
4nsxcqtrorpaxj516i4157xui *  master    Ready   Active        Leader
e5wtqee69oe08i1zk28z4y2oa    slave1    Ready   Active        Reachable
[root@master ~]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
4nsxcqtrorpaxj516i4157xui *  master    Ready   Active        Leader
e5wtqee69oe08i1zk28z4y2oa    slave1    Ready   Active        Reachable
[root@master ~]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
4nsxcqtrorpaxj516i4157xui *  master    Ready   Active        Leader
e5wtqee69oe08i1zk28z4y2oa    slave1    Ready   Active        Reachable
[root@master ~]# docker node demote slave1
Manager slave1 demoted in the swarm.
[root@master ~]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
4nsxcqtrorpaxj516i4157xui *  master    Ready   Active        Leader
e5wtqee69oe08i1zk28z4y2oa    slave1    Ready   Active


end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  docker