目錄
2. Define Ports in a Dockerfile with EXPOSE
3. Use Docker Compose with the ports Section
4. Check Open Ports with docker ps
首頁 運維 Docker 您如何將端口從Docker容器公開到主機機器?

您如何將端口從Docker容器公開到主機機器?

Jul 12, 2025 am 01:33 AM
docker 端口映射

要暴露Docker容器端口,需通過端口映射使主機可訪問容器服務。 1. 使用docker run -p [host_port]:[container_port]命令運行容器,如docker run -p 8080:3000 my-web-app;2. Dockerfile中使用EXPOSE指令標註用途,如EXPOSE 3000,但不會自動發布端口;3. Docker Compose中在yml文件的ports段配置,如ports: - "8080:3000";4. 運行後使用docker ps檢查端口映射是否生效。以上方法確保正確暴露並驗證容器端口。

Exposing a port from a Docker container to the host machine is a common task when running services like web servers, APIs, or databases inside containers. The key is mapping the container's internal port to a port on your host system so you can access it from outside Docker.


1. Use the -p Flag with docker run

The most straightforward way to expose a port is by using the -p (or --publish ) flag when running a container with docker run .

Basic syntax:

 docker run -p [host_port]:[container_port] [image_name]

For example, if you're running a web app inside the container that listens on port 3000:

 docker run -p 8080:3000 my-web-app

Now you can access the service via http://localhost:8080 on your host machine.

  • You can specify multiple ports by repeating the -p flag.
  • If you omit the host port ( -p 3000 ), Docker will assign a random available port automatically.
  • This works for TCP and UDP; use -p 53:53/udp to expose UDP ports specifically.

2. Define Ports in a Dockerfile with EXPOSE

You can document which ports your image uses by adding the EXPOSE instruction in your Dockerfile:

 EXPOSE 3000

However, this does not actually publish the port —you still need to use -p when running the container. Think of EXPOSE as metadata for whoever runs the container later.

If you're building an image others will use, including EXPOSE helps them know what ports are relevant without guessing.


3. Use Docker Compose with the ports Section

If you're using Docker Compose, define port mappings under the ports section in your docker-compose.yml file:

 services:
  webapp:
    image: my-web-app
    ports:
      - "8080:3000"

This has the same effect as the -p flag but keeps your configuration centralized and version-controlled.

  • You can also use short syntax like "3000" to let Docker assign a random host port.
  • For more control, use long syntax with extra options like protocol or mode.

4. Check Open Ports with docker ps

After starting your container, verify the port mapping with:

 docker ps

Look at the "PORTS" column. It should show something like:

 0.0.0.0:8080->3000/tcp

That confirms your host's port 8080 is forwarding to port 3000 in the container.

If you don't see any port listed, double-check that you used -p or configured ports correctly.


And that's basically it. Exposing ports isn't complicated once you know how Docker maps them—but it's easy to overlook a small detail like forgetting the -p flag or assuming EXPOSE does more than it does.

以上是您如何將端口從Docker容器公開到主機機器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP教程
1596
276
怎樣開發一個完整的PythonWeb應用程序? 怎樣開發一個完整的PythonWeb應用程序? May 23, 2025 pm 10:39 PM

要開發一個完整的PythonWeb應用程序,應遵循以下步驟:1.選擇合適的框架,如Django或Flask。 2.集成數據庫,使用ORM如SQLAlchemy。 3.設計前端,使用Vue或React。 4.進行測試,使用pytest或unittest。 5.部署應用,使用Docker和平台如Heroku或AWS。通過這些步驟,可以構建出功能強大且高效的Web應用。

查看Docker容器內部進程信息的方法 查看Docker容器內部進程信息的方法 May 19, 2025 pm 09:06 PM

查看Docker容器內部進程信息有三種方法:1.使用dockertop命令,可以列出容器內所有進程,顯示PID、用戶、命令等信息;2.使用dockerexec進入容器內部,再用ps或top命令查看詳細進程信息;3.使用dockerstats命令,實時顯示容器資源使用情況,結合dockertop可全面了解容器性能。

如何在Ubuntu上部署PyTorch應用 如何在Ubuntu上部署PyTorch應用 May 29, 2025 pm 11:18 PM

在Ubuntu上部署PyTorch應用可以通過以下步驟完成:1.安裝Python和pip首先,確保你的系統上已經安裝了Python和pip。你可以使用以下命令來安裝它們:sudoaptupdatesudoaptinstallpython3python3-pip2.創建虛擬環境(可選)為了隔離你的項目環境,建議創建一個虛擬環境:python3-mvenvmyenvsourcemyenv/bin/activat

批量停止Docker容器的高效操作方法 批量停止Docker容器的高效操作方法 May 19, 2025 pm 09:03 PM

批量停止Docker容器的高效方法包括使用基本命令和工具。 1.使用dockerstop$(dockerps-q)命令,並可調整超時時間,如dockerstop-t30$(dockerps-q)。 2.利用dockerps的過濾選項,如dockerstop$(dockerps-q--filter"label=app=web")。 3.使用DockerCompose命令docker-composedown。 4.編寫腳本按順序停止容器,如停止db、app和web容器。

配置PhpStorm與Docker容器化開發環境 配置PhpStorm與Docker容器化開發環境 May 20, 2025 pm 07:54 PM

通過Docker容器化技術,PHP開發者可以利用PhpStorm提高開發效率和環境一致性。具體步驟包括:1.創建Dockerfile定義PHP環境;2.在PhpStorm中配置Docker連接;3.創建DockerCompose文件定義服務;4.配置遠程PHP解釋器。優點是環境一致性強,缺點包括啟動時間長和調試複雜。

比較不同Docker鏡像版本差異的方法 比較不同Docker鏡像版本差異的方法 May 19, 2025 pm 09:00 PM

比較不同Docker鏡像版本差異的方法有兩種:1.使用dockerdiff命令查看容器文件系統變化;2.使用dockerhistory命令查看鏡像構建層級差異。這些方法有助於理解和優化鏡像版本管理。

Debian上Jenkins部署性能調優 Debian上Jenkins部署性能調優 May 28, 2025 pm 04:51 PM

在Debian上部署和調優Jenkins是一個涉及多個步驟的過程,包括安裝、配置、插件管理和性能優化。以下是一個詳細的指南,幫助你實現高效的Jenkins部署。安裝Jenkins首先,確保你的系統已經安裝了Java環境。 Jenkins需要Java運行時環境(JRE)才能正常運行。 sudoaptupdatesudoaptinstallopenjdk-11-jdk驗證Java安裝成功:java-version接下來,添加J

如何在Debian上實現Docker的自動化部署 如何在Debian上實現Docker的自動化部署 May 28, 2025 pm 04:33 PM

在Debian系統上實現Docker的自動化部署可以通過多樣的方法來完成,以下是詳細的步驟指南:1.安裝Docker首先,確保你的Debian系統保持最新狀態:sudoaptupdatesudoaptupgrade-y接著,安裝必要的軟件包以支持APT通過HTTPS訪問倉庫:sudoaptinstallapt-transport-httpsca-certificatescurlsoftware-properties-common-y導入Docker的官方GPG密鑰:curl-

See all articles