Docker 运行 -p ?/? (这两个端口号是什么以及它们代表什么)

Raj*_*war 22 java docker spring-boot docker-image docker-container

我使用命令“docker run -p 8080/8080 --name my_local_image ....”,但失败,提示无法在本地找到图像“8080/8080:最新”

8080/8080 = 这两个端口到底代表什么?

Ima*_*lki 45

将“ -p 8080/8080 ”替换为“ -p 8080:8080

  • 第一个端口:Docker主机(你可以使用这个端口来访问你的容器),用于从外部访问容器。
  • 第二个:是您的应用程序使用的端口。

示例:我想在 docker 容器中运行 tomcat 服务器,tomcat 的默认端口是8080,我想在端口9000上公开我的 docker ,所以我必须编写:

docker run -p 9000:8080 --name myTomcatContainer tomcat 
Run Code Online (Sandbox Code Playgroud)

因此,通过此配置,我可以使用以下命令从外部访问 Tomcat:http://host-ip:9000


Ana*_*han 5

-p选项用于公开用于图像实例的端口。第一个是主机端口,“:”后面的第二个参数fullcolon是它应该映射到的容器端口。有关更多详细信息,请阅读文档

使用 docker run 启动实例时收到的错误告诉我们,您通过命令提供的映像名称在您使用的计算机上本地不可用,这也可能是您提供端口的方式存在问题使用“/”而不是“:”。因此,为了安全起见,请docker pull首先使用从存储库中提取最新的映像,然后使用正确的语法运行它。

--expose=[]:暴露容器内的一个端口或一系列端口。EXPOSE这些是指令所公开内容之外的附加内容

-P :将所有暴露的端口发布到主机接口

-p=[] :将容器的端口或一系列端口发布到主机,格式为:ip:hostPort:containerPort | ip::容器端口 | 主机端口:容器端口 | containerPort hostPort 和containerPort 都可以指定为端口范围。当为两者指定范围时,该范围中的容器端口数必须与该范围中的主机端口数相匹配,例如: -p 1234-1236:1234-1236/tcp 当仅为 hostPort 指定范围时,containerPort 必须不是一个范围。在这种情况下,容器端口发布在指定主机端口范围内的某个位置。(例如-p 1234-1236:1234/tcp)(使用“docker port”查看实际映射)

--link="" :添加到另一个容器的链接(:alias 或 )