我使用 Play-with-Docker 平台创建了一个包含 3 个 Docker 实例的 Swarm 集群:1 个管理器和 2 个工作器;然后我从图像创建一个服务nginx:alpine:
docker service create -p 8080:80 --name nginx-app nginx:alpine
Run Code Online (Sandbox Code Playgroud)
事情进展顺利。
然后我update使用更改发布端口的服务:而不是8080,现在我希望发布端口为8081。我跑了这个:
docker service update --publish-rm 8080 --publish-add 8081 nginx-app
Run Code Online (Sandbox Code Playgroud)
但它并没有删除已发布的端口8080;相反,它创建了另一个已发布的端口30002,该端口30002映射到8081
我在这里做错了什么?如何更改已发布的端口?
我有一个撰写文件:
version: "3"
services:
db:
image: postgres:12.5
ports:
- "15432:5432"
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: test
volumes:
- ./postgres-data:/var/lib/postgresql/data
backend:
image: backend
depends_on:
- db
restart: always
ports:
- "6969:8000"
volumes:
- ./app:/app
Run Code Online (Sandbox Code Playgroud)
当我运行 docker-compose up 来启动 2 个容器时,我注意到:
这两个服务都使用绑定挂载,据我了解:绑定挂载始终将内容从主机目录传输到容器。但在 db 服务的情况下不会发生这种情况
那么我这里哪里理解错了呢?
提前致谢