Docker 新手。我正在 Win 10 计算机上运行 Visual Studio 2019 社区。安装了 Docker 桌面并创建了两个解决方案(service1 和 service2)。我正在尝试在自己的容器上运行这两个解决方案。
我能够使用以下命令构建并运行 service1:
docker run -it --rm -p 3000:80 --name mymicroservicecontainer mymicroservice
Run Code Online (Sandbox Code Playgroud)
请问3000:80是什么?80是端口吗?因为我能够使用浏览器中的http://localhost:3000/api/product/1运行我的 api 。
接下来,我尝试通过以下方式在它自己的容器上运行 service2:
docker run -it --rm -p 2000:80 --name myanotherservicecontainer myanotherservice
Run Code Online (Sandbox Code Playgroud)
由于端口是 2000,我想它应该可以工作,但是我收到以下错误:
docker: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:2000: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
Run Code Online (Sandbox Code Playgroud)
time="2020-04-08T14:22:41-04:00" level=error msg="等待容器时出错:上下文已取消"
那是因为我有 :80 与 service1 相同吗?解决办法是什么?我在命令提示符下以管理模式运行命令。
请帮忙。谢谢。
docker run -it --rm -p 3000:80 --name mymicroservicecontainer mymicroservice
Run Code Online (Sandbox Code Playgroud)
第一个问题的答案是肯定的,80 是一个端口。基本上,-p 3000:80它将容器中的 TCP 端口 80 映射到 Docker 主机上的端口 3000。
您收到的服务错误是因为端口 2000 被其他进程占用。错误消息中也明确提到了这一点。
docker: Error response from daemon: Ports are not available
Run Code Online (Sandbox Code Playgroud)
如果您尝试将其映射到其他端口(在您的计算机上是免费的),那么它将按预期工作。
也许尝试-p 1111:80或者-p 1234:80
阅读本文以了解有关 docker 容器网络的更多详细信息。
| 归档时间: |
|
| 查看次数: |
13058 次 |
| 最近记录: |