【发布时间】:2019-09-23 18:10:33
【问题描述】:
我需要您的帮助来了解我是否正确理解了 docker 发布的工作方式。
我使用 Dockerfile 创建了一个自定义镜像。 Dockerfile如下:
FROM mcr.microsoft.com/dotnet/framework/wcf:4.8
COPY ./ .
RUN "C:\assets\vc_redist.x64.exe" /quiet /install
WORKDIR /ServicioOcr .
RUN powershell -NoProfile -Command \
Import-module IISAdministration; \
New-IISSite -Name "ServicioOcr" -PhysicalPath C:\ServicioOcr -BindingInformation "*:1990:"; \
Add-WindowsFeature NET-WCF-HTTP-Activation45
ENTRYPOINT ["C:\\KeepAlive.exe"]
EXPOSE 1990
然后我运行一个容器发布暴露的端口没有问题:
d96e49d67157 ocrserviceimage:v1 "C:\\ServiceMonitor.e" 3 hours ago Up 2 hours 80/tcp, 808/tcp, 0.0.0.0:2019->1990/tcp ocrservcont
然后,我创建了一个 Docker 服务,因此我可以拥有托管该服务的容器的多个副本,使用以下命令:
docker service create --name=SWARM_OCR_SERVICE ocrserviceimage:v8 --publish 2020:1990
然后我让容器在服务中运行,所以我检查端口是否正确发布,但不是
shkmfrrodg1a SWARM_OCR_SERVICE.1 ocrserviceimage:v8 BAZ1573221 Running Running 2 hours ago
据我了解,Docker Service 的工作方式如下:
- Docker 服务在其中创建指定数量的副本。每个副本 运行服务的单独实例。
- 容器内的服务应该可以通过发布的 ip:端口。
- 向发布的 ip:port 发出请求,然后转发 到可以处理它的可用副本/容器。
我的理解对吗?
提前致谢。
【问题讨论】:
标签: docker docker-swarm docker-swarm-mode