最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Dockerfile的EXPOSE和Docker?Compose的ports有什么區(qū)別詳解

 更新時間:2026年07月21日 09:01:42   作者:Knight_AL  
Docker是一種容器化技術,提供完整的容器解決方案,能夠實現(xiàn)環(huán)境一致性、進程隔離和高效部署,這篇文章主要介紹了Dockerfile的EXPOSE和Docker?Compose的ports有什么區(qū)別的相關資料,需要的朋友可以參考下

在容器化部署時,我們經常會在 Dockerfile 里看到:

EXPOSE 18010

同時在 docker-compose.yml 里又寫了:

ports:
  - "18010:18010"

這兩者看起來都涉及端口,但卻常常讓人搞不清楚它們到底有什么區(qū)別?特別是初學者看到這兩個就懵了:端口是不是重復寫了?到底哪個負責映射?寫了 EXPOSE 會不會自動對外開放端口?

一、Dockerfile 中的 EXPOSE 是什么?

EXPOSE 的作用是 聲明容器內部服務監(jiān)聽的端口,它只是一個 元數(shù)據(jù)(Metadata),用于告訴其他開發(fā)者或工具:

“這個鏡像內部有一個服務會監(jiān)聽這個端口。”

例如你的 Dockerfile 里:

EXPOSE 18010

說明:

? 這個鏡像內部有程序監(jiān)聽 18010

?但 EXPOSE 不會自動開放端口到宿主機

也就是說外界依然訪問不到此端口。

它是一種 文檔式說明,便于閱讀/維護/工具自動化。

二、Docker Compose 中的 ports 又是什么?

在 docker-compose.yml 里:

ports:
  - "18010:18010"

這是一個真正的 端口映射(Port Mapping)

宿主機端口 18010  ?  容器內部 18010

作用:

? 將容器內部監(jiān)聽的端口映射到宿主機

? 外部可以直接通過宿主機訪問該端口

例如:

curl http://your-server-ip:18010

不寫 ports:,容器內部服務再跑得再好,宿主機和外部是訪問不到的。

三、兩者到底有什么區(qū)別?

配置位置是否映射到宿主機是否讓外界可訪問作用
EXPOSE? 不映射? 不可訪問只是聲明/提示
ports? 映射? 可訪問真正對外映射端口

四、端口映射

?? 如果你只是構建鏡像,在 Dockerfile 里寫:

EXPOSE 18010

是一個良好的習慣,它說明了鏡像內部的監(jiān)聽端口。

?? 但如果你要讓容器對外可訪問,則 必須在 Compose 或 docker run 時寫端口映射

ports:
  - "18010:18010"

?? 只有 EXPOSE 是不會自動映射端口的!

五、實例演示

Dockerfile

FROM eclipse-temurin:17-jdk-jammy

WORKDIR /app

COPY hikvoice-relay-1.0-SNAPSHOT.jar /app/app.jar
COPY lib/ /app/lib/
COPY AudioFile/ /app/AudioFile/

ENV LD_LIBRARY_PATH=/app/lib:/usr/lib:/usr/local/lib

EXPOSE 18010

ENTRYPOINT ["java", "-jar", "/app/app.jar"]

這里的 EXPOSE 18010 表示:

?? 鏡像內部這個服務在監(jiān)聽 18010(例如 Spring Boot 默認端口)

docker-compose.yml(關鍵部分)

你不想寫 environment 變量,而是把所有配置放到 .env 里:

version: "3.8"

services:
  wvp:
    network_mode: "host"
    image: wvp-gb28181:latest
    container_name: wvp
    restart: always
    env_file:
      - .env
    volumes:
      - ./:/app/config
      - ./config.json:/app/static/config.json
      - /opt/media/bin/www:/opt/media/bin/www
    ports:
      - "18080:18080"
      - "18081:18081"
      - "8116:8116/udp"

  hikvoice:
    image: hikvoice:latest
    container_name: hikvoice
    restart: unless-stopped
    ports:
      - "18010:18010"
    env_file:
      - .env

這里:

? env_file: - .env 用來注入 .env 里的所有變量

? ports: - "18010:18010" 把容器內部監(jiān)聽的 18010 映射到宿主機

六、總結

項目推薦寫法
表示服務監(jiān)聽端口EXPOSE 18010
映射端口給宿主機訪問ports: - "18010:18010"
注入環(huán)境變量env_file: - .env

到此這篇關于Dockerfile的EXPOSE和Docker Compose的ports有什么區(qū)別的文章就介紹到這了,更多相關Dockerfile的EXPOSE和Compose的ports區(qū)別內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Docker內部MySQL如何開啟binlog日志

    Docker內部MySQL如何開啟binlog日志

    這篇文章主要介紹了Docker內部MySQL如何開啟binlog日志問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Docker搭建Harbor公開倉庫的方法示例

    Docker搭建Harbor公開倉庫的方法示例

    這篇文章主要介紹了Docker搭建Harbor公開倉庫的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • .netcore 使用surging框架發(fā)布到docker

    .netcore 使用surging框架發(fā)布到docker

    這篇文章主要介紹了netcore 使用surging框架發(fā)布到docker,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • docker拷貝文件到主機及導入導出容器及運行導出容器方式

    docker拷貝文件到主機及導入導出容器及運行導出容器方式

    這篇文章主要介紹了docker拷貝文件到主機及導入導出容器及運行導出容器方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • docker firewalld 防火墻設置方式

    docker firewalld 防火墻設置方式

    在CentOS7中,Docker默認修改防火墻配置,可能導致手動添加的策略失效,解決方法包括啟用firewalld,禁用Docker的iptables,并重新配置防火墻策略,具體步驟包括編輯/etc/docker/daemon.json文件,重啟Docker服務,以及在firewalld中設置偽裝地址和端口策略
    2024-10-10
  • Docker容器資源控制CGroup的使用

    Docker容器資源控制CGroup的使用

    本文主要介紹了Docker容器資源控制CGroup的使用,用于限制CPU、內存、磁盤I/O等資源,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-09-09
  • 從入門到精通詳解Docker容器化的實戰(zhàn)指南

    從入門到精通詳解Docker容器化的實戰(zhàn)指南

    在微服務時代,Docker已成為開發(fā)者的必備技能,本文將帶你從零開始,通過實戰(zhàn)案例掌握Docker的核心技術,包括容器管理、鏡像構建、Docker Compose編排等,附完整可運行代碼
    2026-03-03
  • 在Linux系統(tǒng)中使用Dockerfile創(chuàng)建Docker的完整步驟

    在Linux系統(tǒng)中使用Dockerfile創(chuàng)建Docker的完整步驟

    Dockerfile是Docker用來構建鏡像的文本文件,包含自定義的指令和格式,這篇文章主要介紹了在Linux系統(tǒng)中使用Dockerfile創(chuàng)建Docker的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-11-11
  • 關于docker安裝python3.8鏡像的問題

    關于docker安裝python3.8鏡像的問題

    這篇文章主要介紹了docker安裝python3.8鏡像的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • centos搭建部署docker環(huán)境的詳細步驟

    centos搭建部署docker環(huán)境的詳細步驟

    Docker 將程序與程序的運行環(huán)境打包在一起,從而避免了復雜的環(huán)境配置,下面這篇文章主要給大家介紹了關于centos搭建部署docker環(huán)境的詳細步驟,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07

最新評論

武强县| 尖扎县| 佛冈县| 新绛县| 泽州县| 哈密市| 泾川县| 酒泉市| 阳新县| 阜城县| 波密县| 闸北区| 荃湾区| 城口县| 灵石县| 安仁县| 庄浪县| 长泰县| 眉山市| 曲阳县| 枞阳县| 华坪县| 周宁县| 巧家县| 红桥区| 宜春市| 宜君县| 通州区| 双峰县| 阿瓦提县| 恩施市| 大关县| 石柱| 福安市| 修武县| 同德县| 巴马| 玉山县| 吉水县| 德昌县| 临桂县|