1.创建容器
[root@es1 web]# docker service create -name mynginx5 -p 8014:80 192.168.1.11:443/myharbor/nginx:latest
p8dltoenq5rci298xeksoz5g0
overall progress: 3 out of 3 tasks
1/3: running
2/3: running
3/3: running
verify: Service converged
2.查看服务的详细信息
[root@es1 web]# docker service inspect mynginx5
[
{
"ID": "p8dltoenq5rci298xeksoz5g0",
"Version": {
"Index": 411
},
"CreatedAt": "2024-07-04T12:27:09.413872732Z",
"UpdatedAt": "2024-07-04T12:27:09.41491595Z",
"Spec": {
"Name": "mynginx5",
"Labels": {},
"TaskTemplate": {
"ContainerSpec": {
"Image": "192.168.1.11:443/myharbor/nginx:latest@sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3",
"Init": false,
"StopGracePeriod": 10000000000,
"DNSConfig": {},
"Isolation": "default"
},
"Resources": {
"Limits": {},
"Reservations": {}
},
"RestartPolicy": {
"Condition": "any",
"Delay": 5000000000,
"MaxAttempts": 0
},
"Placement": {
"Platforms": [
{
"Architecture": "amd64",
"OS": "linux"
}
]
},
"ForceUpdate": 0,
"Runtime": "container"
},
"Mode": {
"Replicated": {
"Replicas": 3
}
},
"UpdateConfig": {
"Parallelism": 1,
"FailureAction": "pause",
"Monitor": 5000000000,
"MaxFailureRatio": 0,
"Order": "stop-first"
},
"RollbackConfig": {
"Parallelism": 1,
"FailureAction": "pause",
"Monitor": 5000000000,
"MaxFailureRatio": 0,
"Order": "stop-first"
},
"EndpointSpec": {
"Mode": "vip",
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 8014,
"PublishMode": "ingress"
}
]
}
},
"Endpoint": {
"Spec": {
"Mode": "vip",
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 8014,
"PublishMode": "ingress"
}
]
},
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 8014,
"PublishMode": "ingress"
}
],
"VirtualIPs": [
{
"NetworkID": "ok60ir4yv3bsmbl8rvfn17qfy",
"Addr": "10.0.0.54/24"
}
]
}
}
]
ingress 发布模式:虚拟IP地址:10.0.0.54/24
3.ingress 网络内容查看
[root@es1 web]# docker network ls
NETWORK ID NAME DRIVER SCOPE
fb0ede90b96a bridge bridge local
fd0bed6aedb8 bridge-network bridge local
497b4d8e31c9 data_default bridge local
9ced036027af docker_gwbridge bridge local
e4fab055f716 host host local
ok60ir4yv3bs ingress overlay swarm --创建了这个网络。
e4570a3521b6 my-network bridge local
6c755811646c none null local
docker network inspect ok60ir4yv3bs
[root@es1 web]# docker network inspect ok60ir4yv3bs
[
{
"Name": "ingress",
"Id": "ok60ir4yv3bsmbl8rvfn17qfy",
"Created": "2024-07-04T17:18:10.08726197+08:00",
"Scope": "swarm",
"Driver": "overlay",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "10.0.0.0/24",
"Gateway": "10.0.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": true,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"333a3db166717c127780f1775e839ee51c4dee52ec6d72c4609b2e39ad3684bc": {
"Name": "mynginx5.2.ksg8hbk8dhme9tgo8xcroztmu",
"EndpointID": "c3196dcecc4c73d26856216a2b029c8817a36452ed0b3b83ee235ead1636c52e",
"MacAddress": "02:42:0a:00:00:38",
"IPv4Address": "10.0.0.56/24",
"IPv6Address": ""
},
"ingress-sbox": {
"Name": "ingress-endpoint",
"EndpointID": "82a5bd172167761d151fad95e520bbe664caa51c52d2f2d0de6129fa5c4ad966",
"MacAddress": "02:42:0a:00:00:02",
"IPv4Address": "10.0.0.2/24",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.driver.overlay.vxlanid_list": "4096"
},
"Labels": {},
"Peers": [
{
"Name": "1e2fbbf4e31e",
"IP": "192.168.1.10"
},
{
"Name": "fcc6ca6eb4cf",
"IP": "192.168.1.7"
},
{
"Name": "411f2cd415be",
"IP": "192.168.1.9"
}
]
}
]
--查看服务分布
[root@es1 web]# docker service ps mynginx5
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
0ro0blayn38a mynginx5.1 192.168.1.11:443/myharbor/nginx:latest es2 Running Running 6 minutes ago
ksg8hbk8dhme mynginx5.2 192.168.1.11:443/myharbor/nginx:latest es1 Running Running 6 minutes ago
jjdt1nm3b9ne mynginx5.3 192.168.1.11:443/myharbor/nginx:latest es3 Running Running 6 minutes ago
4.ovarlay 网络和 ingress 网络对比
Overlay的缺陷:
Overlay网络与传统网络相比而言,性能可能是它的问题所在。
在对网络性能要求非常高的场景下,也需要酌情是否采用Overlay网络。
ingress:
ingress是swarm集群中每个node都默认存在的一种网络类型,
它的作用是可以确保在集群中某个端口
的服务始终保留该端口,不管实际运行容器的是哪个节点。
例如当前:mynginx5 服务,无论访问哪个节点,端口都是:8014;
的。