今天要說的這個,其實非常的簡單,就是說······
如果你現在已經在swarm集羣中,部署了一個service,這個service對外暴露的端口號是8080,怎麼將它修改爲80端口?
比如,在集羣中有個nginx的service,對外提供服務的端口是8080
[root@nccztsjb-node-01 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS xi0du71dqcou nginx replicated 3/3 172.20.58.152/middleware/nginx:1.21.4 *:8080->80/tcp [root@nccztsjb-node-01 ~]# netstat -ntlp |grep 8080 tcp6 0 0 :::8080 :::* LISTEN 16278/dockerd [root@nccztsjb-node-01 ~]#
現在,要將這個端口改成80端口,也就是說,對外提供服務的端口從8080變成了80了
其實,修改也是非常的簡單的,就像下面這樣:
docker service update --publish-rm published=8080,target=80 --publish-add published=80,target=80 nginx
執行這個命令,端口更新的過程如下:
[root@nccztsjb-node-01 ~]# docker service update --publish-rm published=8080,target=80 --publish-add published=80,target=80 nginx nginx overall progress: 3 out of 3 tasks 1/3: running [==================================================>] 2/3: running [==================================================>] 3/3: running [==================================================>] verify: Service converged
代表更新成功了,再來看下service現在的對外端口和各個主機上監聽的端口
[root@nccztsjb-node-01 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS 08tg8sy9nb1b nginx replicated 3/3 172.20.58.152/middleware/nginx:1.21.4 *:80->80/tcp [root@nccztsjb-node-01 ~]# netstat -ntlp | grep 80 tcp 0 0 127.0.0.1:6012 0.0.0.0:* LISTEN 18580/sshd: root@pt tcp6 0 0 ::1:6012 :::* LISTEN 18580/sshd: root@pt tcp6 0 0 :::80 :::* LISTEN 16278/dockerd [root@nccztsjb-node-01 ~]#
到這裏你看到,service監聽的端口已經從8080變成了80了。
這個是怎麼實現的,看下更新service的參數,然後你就明白了。
- --publish-rm published=8080,target=80,這個參數是把原來8080到80的映射給刪除了
- --publish-add published=80,target=80,這個參數是把80映射到了主機的80
其實,這個端口的調整也是非常的簡單的,主要就是對2個參數的靈活的應用
- --publish-rm published=8080,target=80
- --publish-add published=80,target=80
OK,今天的主題就到這裏,任何的疑問,歡迎留言······