0、环境准备
在docker swarm 创建三个节点 章 中已经搭建好。
1、创建 一个 overlay 的网络 driver
[vagrant@swarm-manager ~]$ docker network create -d overlay demo
hfh9av035783w8tgksjtucysf
[vagrant@swarm-manager ~]$ docker network ls
NETWORK ID NAME DRIVER SCOPE
9e48970e1c01 bridge bridge local
hfh9av035783 demo overlay swarm
127cade73a78 docker_gwbridge bridge local
b3ccf9adf2c3 host host local
j5faq74fptoa ingress overlay swarm
698360e3bfa1 none null local
2、创建mysql 的服务
[vagrant@swarm-manager ~]$ docker service create --name mysql --env MYSQL_ROOT_PASSWORD=root --env MYSQL_DATABASE=wordpress --network demo --mount type=volume,source=mysql-data,destination=/var/lib/mysql mysql:5.7.27
–mount (类似与 volume) type=volume (mount的类型为 volume),source=mysql-data (本地存储数据的位置在 mysql-data内) ,destination=/var/lib/mysql(service 内 存储数据的位置在 /var/lib/mysql)
3、查看 mysql 镜像
docker service ls
[vagrant@swarm-manager ~]$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
i6mocpbq76tv mysql replicated 1/1 mysql:5.7.27
docker service ps mysql
[vagrant@swarm-manager ~]$ docker service ps mysql
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
l73zchpe43qt mysql.1 mysql:5.7.27 swarm-manager Running Running 54 seconds ago
docker ps
[vagrant@swarm-manager ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90462ac76c65 mysql:5.7.27 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 3306/tcp, 33060/tcp mysql.1.l73zchpe43qtiviq4aqk70h4r
4、 创建 wordpress 的 service
[vagrant@swarm-manager ~]$ docker service create --name wordpress -p 80:80 --network demo --env WORDPRESS_DB_PASSWORD=root --env WORDPRESS_DB_HOST=mysql wordpress
swarm-manager上查看 wordpress 镜像:
[vagrant@swarm-manager ~]$ docker service ps wordpress
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
oe32ys1e4exs wordpress.1 wordpress:latest swarm-worker1 Running Running about a minute ago
[vagrant@swarm-manager ~]$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
i6mocpbq76tv mysql replicated 1/1 mysql:5.7.27
tlpwe6cz82gx wordpress replicated 1/1 wordpress:latest *:80->80/tcp
swarm-worker1查看:
[vagrant@swarm-worker1 ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c300f7fed594 wordpress:latest "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 80/tcp wordpress.1.oe32ys1e4exsrbu3q944fhc4c
5、查看swarm-worker1的 ip 地址 (wordpress 在哪台机器上 就访问 那台机器的ip 地址即可)
192.168.205.11
在浏览器输入上面的ip访问:
6、此时发现 使用 swarm-worker1的 ip 和swarm-manager 的 ip 也能访问 wordpress。
因为:
查看 swarm-worker1的网络 和 swarm-manager 的网络,
发现 demo 的 overlay 网络 会通过 swarm 自动同步过去
[vagrant@swarm-worker2 ~]$ docker network ls
NETWORK ID NAME DRIVER SCOPE
fdb699864384 bridge bridge local
ab40e8745b36 docker_gwbridge bridge local
11f34ea60afe host host local
j5faq74fptoa ingress overlay swarm
6bc6c528b1d6 none null local