[英]Docker run -p ?/? (what are this two port numbers and what they represents )
我使用了命令“docker run -p 8080/8080 --name my_local_image....”,但无法在本地找到图像“8080/8080:latest”
8080/8080 = 这两个端口究竟代表什么?
用这个“ -p 8080:8080 ”替换这个“ -p 8080/8080 ”
Example: I want to run tomcat server in a docker container, the default port of tomcat is 8080 and I want to expose my docker on port 9000 so i have to write:
docker run -p 9000:8080 --name myTomcatContainer tomcat
因此,通过此配置,我可以使用以下命令从外部访问 Tomcat:http://host-ip:9000
-p
选项用于公开用于映像实例的端口。 第一个是主机端口,“:”后的第二个fullcolon
是它应该映射到的容器端口。 有关更多详细信息,请阅读doc 。
您在使用 docker run 启动实例时收到的错误告诉我们,您随命令提供的映像名称在您使用的机器上本地不可用,这也可能是您提供端口的方式的问题使用 '/' 而不是 ":"。所以,为了安全起见,首先使用docker pull
从 repo 中提取最新图像,然后使用正确的语法运行它。
--expose=[]:暴露容器内的一个端口或一系列端口。 这些是
EXPOSE
指令公开的附加内容-P:将所有暴露的端口发布到主机接口
-p=[]:发布一个容器的端口或一系列端口到主机格式:ip:hostPort:containerPort | ip::containerPort | 主机端口:容器端口 | containerPort hostPort 和 containerPort 都可以指定为一系列端口。 为两者指定范围时,范围内的容器端口数必须与范围内的主机端口数匹配,例如:-p 1234-1236:1234-1236/tcp 仅为 hostPort 指定范围时,containerPort 必须不是一个范围。 在这种情况下,容器端口在指定的 hostPort 范围内发布。 (例如,
-p 1234-1236:1234/tcp
)(使用 'docker port' 查看实际映射)--link="": 添加到另一个容器的链接 (:alias or )
只是为了在这里已经很好的答案中添加一点,我喜欢使用在城市中寻找朋友公寓的类比来解释端口号。
在这个类比中,
主机操作系统 == 公寓大楼所在的社区
您的申请 == 公寓大楼
应用程序内的暴露端口 == 综合体中的特定公寓
如果您要查找某人的地址,您会找到用户的邻居(在这种情况下,它将是 URL,如果在本地开发,很可能是http://localhost
)
但是您需要公寓大楼的街道号码,该号码是5000 :8080 之类的第一个数字,因此您的应用程序在端口 5000 上暴露在主机操作系统上,朋友的街道地址是 5000,localHost 街道。
但是一旦你到达公寓大楼,你仍然需要知道该敲哪扇门。 您已经到达公寓大楼(您的申请),但您的朋友具体住在哪里? 那是第二个数字, 5000: 8080 。
因此,您朋友的网络地址是 URL、主机操作系统中的端口(如果您在本地开发,这是您的计算机,如果不是,它是应用程序运行的任何服务器)和应用程序中公开的端口的组合。
请注意,公寓大楼通常有多个公寓,但仍位于同一地址,因此您的应用程序很可能会暴露多个端口,例如5000:8081
或5000:9000
。
也有可能不同建筑的两套公寓有相同的公寓号,所以我们可以有5000:8080
和8080:8080
,这两种情况都不会导致网络流量冲突。
这张图片是我提到的最后一个案例的一个例子
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.