[英]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.