亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

項目訪問使用docker bridge網(wǎng)絡模式(端口映射)配置過程

 更新時間:2025年03月21日 09:31:13   作者:java阿杜  
這篇文章主要介紹了項目訪問使用docker bridge網(wǎng)絡模式(端口映射)配置過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

在平常的開發(fā)工作中,我們經(jīng)常需要部署項目。比如部署測試環(huán)境、生產(chǎn)環(huán)境等,使用 docker 方式部署很便捷,可以有效的減少同樣的代碼換環(huán)境運行的問題。docker 常見的網(wǎng)絡模式有 host、bridge 等。host 模式直接共享宿主機的網(wǎng)絡棧,容器之間沒有進行網(wǎng)絡隔離,容器內的應用監(jiān)聽的端口會直接映射到主機的端口上,無需進行端口映射,網(wǎng)絡安全性相對較差。bridge 是 docker 默認的網(wǎng)絡模式 ,docker 守護進程會建立 docker0 的虛擬網(wǎng)橋,容器會連接到這個網(wǎng)橋上,并獲得一個獨立的 IP 地址,容器之間及容器與外部網(wǎng)絡之間都通過 docker0 網(wǎng)橋進行通信,需要進行網(wǎng)絡地址轉換 (NAT)。今天,我們總結下 bridge 橋接模式的用法。

一:概述

bridge 模式為 docker 默認的網(wǎng)絡模式,docker 會創(chuàng)建一個 docker0 的虛擬網(wǎng)橋。主要用于連接宿主機和容器之間的網(wǎng)絡通信。通過創(chuàng)建虛擬的橋接設備,將物理網(wǎng)絡接口與虛擬網(wǎng)絡網(wǎng)絡接口連接起來,進行網(wǎng)絡隔離,使得容器的訪問更加的安全。

在同一 bridge 網(wǎng)絡中,容器可以通過 IP 地址或者容器名互相訪問,每個容器有獨立的 IP 地址,網(wǎng)絡內部有 DNS 解析服務,將容器名解析到對應的 IP 地址,實現(xiàn)通過容器名訪問。

二:docker 網(wǎng)絡命令

1:查看所有的網(wǎng)絡:

docker network ls

2:創(chuàng)建網(wǎng)絡:

docker network create my_network

3:刪除網(wǎng)絡:

docker network rm my_network

4:查看網(wǎng)絡詳細信息:

docker network inspect my_network

5:將容器連接到網(wǎng)絡:

docker network connect my_network my_container

6:將容器與某個網(wǎng)絡的連接斷開:

docker network disconnect my_network my_container

7:刪除未使用的網(wǎng)絡:docker network prune

三:nginx 端口映射

在 docker-compose.yml 文件中進行端口映射,配置使用 my_network 自定義網(wǎng)絡,如下:

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    environment:
      TZ: Asia/Shanghai
    ports:
      - "80:80"
      - "443:443"
      - "8090:8090"
    volumes:
      # 配置文件映射
      - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      # 頁面目錄
      - /usr/local/docker:/usr/share/nginx/html
    privileged: true
    networks: 
      - my_network

# 如果定義了多個服務,自定義網(wǎng)絡一定要放在配置文件末尾
networks:
  my_network:
    external: true
    drive: bridge

ports 端口相關配置命令解釋:

指將容器的端口映射到宿主機端口上,格式為:宿主機端口:容器端口,80 端口映射為 http 方式訪問默認端口,443 端口為 https 方式訪問默認端口。

8090 一般為自定義的端口映射。通過 ports 端口映射,瀏覽器等可以通過宿主機的 IP 和端口訪問容器內的服務。如果沒有 ports 映射,容器內的服務只能在 Docker 網(wǎng)絡內部訪問,外部網(wǎng)絡無法訪問。通過 ports 端口映射,可以靈活便捷的管理端口。

瀏覽器能訪問的端口必須在 ports 中定義,否則外部網(wǎng)絡無法訪問容器內的服務。如果不需要外部網(wǎng)絡訪問,僅容器之間互相通信,可以不配置 ports,使用 Docker 內部網(wǎng)絡即可。

四:后端服務端口配置

1:Dockerfile 配置

# 使用OpenJDK 17基礎鏡像
FROM openjdk:17
RUN mkdir -p /ruoyi/logs
# 切換工作目錄
WORKDIR /ruoyi
# 配置環(huán)境變量
ENV SERVER_PORT=9016 \
    LC_ALL=C.UTF-8 \
    JAVA_OPTS=""
# 暴露應用端口
EXPOSE 9016
# 添加應用Jar包到容器中
ADD ruoyi-admin.jar ./app.jar
# 設置容器的啟動命令,支持暴露兩個端口
ENTRYPOINT ["java", \
           "-Dserver.port=${SERVER_PORT}", \
           "-jar", "app.jar"]

端口配置相關命令解釋:

ENV SERVER_PORT=9016:如果項目中是動態(tài)獲取監(jiān)聽端口,那么需要在 Dockerfile 中進行配置是必要的,如果在應用程序中已經(jīng)硬編碼了監(jiān)聽端口,那么在 Dockerfile 中 ENV SERVER_PORT=9016 設置就沒有實際意義。

EXPOST 端口1 端口2:這個暴露的端口其實是一種指導作用,EXPOSE 并不會真正的將端口暴露給外部網(wǎng)絡,容器內的應用程序是否監(jiān)聽該端口,宿主機能否訪問該端口,要通過其他配置實現(xiàn),實際是指導告訴鏡像的使用人員應用程序可能監(jiān)聽了這些端口。一般為了使用清晰和方便端口管理,建議EXPOSE 的端口和應用程序監(jiān)聽的端口保持一致。使用時注意,防止端口沖突。

2:后端項目 docker-compose.yml 配置文件

services:
  ruoyi-admin:
    image: ruoyi-admin:v1.0
    container_name : ruoyi-admin
    ports:
      - "9016:9016"
    environment:
      - SERVER_PORT=9016
      - TZ=Asia/Shanghai
    restart: always
    networks:
      - my_network

networks:
 my_network:
   external: true

3:nginx.conf 配置

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    server {
        listen 8090;
        server_name localhost;

	    charset utf-8;

        location / {
           # 容器之間通過 IP 互相訪問
           proxy_pass http://172.24.0.2:9016;
           # 容器之間通過 容器名稱 互相訪問
           proxy_pass http://ruoyi-admin:9016;
           index index.html index.htm;
        }
    }
}

注意:

在自定義 docker 網(wǎng)絡中,每個容器之間網(wǎng)絡是隔離的。localhost 在每個容器中都指向容器自身的網(wǎng)絡接口。當用 localhost 轉發(fā)時,會轉發(fā)到 nginx 容器自身,而不是后端服務。在這種情況下,應該使用容器在 docker 內的 IP 地址或者 容器名稱進行互相通信。

當網(wǎng)絡模式為 host 模式時,共享主機的網(wǎng)絡棧,容器和宿主機共享相同的 IP 地址和端口。容器內的 localhost 即 宿主機的 localhost。那么在 nginx 文件中配置 http://localhost:端口號 時,就可以轉發(fā)到對應的后端服務。nginx 容器和后端服務都在同一網(wǎng)絡環(huán)境下,localhost 能夠指向宿主機上的對應端口。

五:測試

啟動 nginx、啟動 java 項目,輸入 nginx 監(jiān)聽的端口或者 后端服務docker-compose.yml 中定義的端口映射,訪問成功,頁面如下:

六:總結

如果是開發(fā)環(huán)境,可以直接使用 host 網(wǎng)絡模式,直接共享宿主機的網(wǎng)絡棧,使用起來更加的方便,減少端口管理問題。

如果是測試環(huán)境或者生產(chǎn)環(huán)境,建議使用自定義網(wǎng)絡模式,不同的容器在不同的網(wǎng)絡模式中,可以保證容器訪問的安全,與外部網(wǎng)絡互相隔離。容器內部之間可以通過 docker 內部網(wǎng)絡 IP 地址或者容器名稱進行互相通信。使用自定義網(wǎng)絡模式,一定要注意端口映射,端口管理相對復雜。

network_mode 和 networks 都是 docker 網(wǎng)絡配置相關。network_mode 直接指定網(wǎng)絡模式,支持 bridge、host、none 等模式。只支持一種網(wǎng)絡模式。networks 支持自定義網(wǎng)絡、多網(wǎng)絡配置,支持 bridge、overlay 等驅動,支持一個容器加入多個網(wǎng)絡。

使用自定義網(wǎng)絡,如果后端服務沒有暴露端口,那么要確保 nginx、后端服務等容器在同一個 docker 網(wǎng)絡中,這樣在瀏覽器中能訪問 nginx 監(jiān)聽的端口轉發(fā)到后端服務。使用自定義網(wǎng)絡,就是為了網(wǎng)絡隔離,容器一般情況下不給外部暴露端口。如 mysql 服務 和 后端服務沒有在同一個自定義網(wǎng)絡中,但是ports 主要就是將容器內的端口映射到宿主機的端口,允許外部網(wǎng)絡訪問容器內的服務。后端項目如果沒有定義 ports,外部網(wǎng)絡無法直接訪問后端服務,nginx 可以通過容器名稱訪問后端服務。nginx 定義了 ports,將宿主機的端口映射到容器的端口上,外部網(wǎng)絡可以訪問 nginx,nginx 將請求轉發(fā)到后端服務。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Docker?搭建?RabbitMQ的詳細過程

    Docker?搭建?RabbitMQ的詳細過程

    在現(xiàn)代微服務與分布式架構中,RabbitMQ?是一款成熟的開源消息隊列中間件,提供了可靠的消息投遞、豐富的路由策略和管理插件,本文將詳細介紹Docker?搭建?RabbitMQ的過程,感興趣的朋友一起看看吧
    2025-04-04
  • docker磁盤空間清理的解決辦法

    docker磁盤空間清理的解決辦法

    前段時間遇到docker磁盤空間太少,無法寫入數(shù)據(jù)的問題。本文就來介紹一下docker磁盤空間清理的解決辦法,感興趣的可以了解一下
    2021-06-06
  • Docker部署Django的詳細指南

    Docker部署Django的詳細指南

    部署Django應用到Docker中的詳細步驟是一個較為復雜的過程,涉及到許多技術和工具的結合使用,本文將詳細介紹如何從零開始使用Docker部署Django應用,感興趣的小伙伴跟著小編一起來看看吧
    2024-12-12
  • Docker下利用jenkins和docker實現(xiàn)持續(xù)交付

    Docker下利用jenkins和docker實現(xiàn)持續(xù)交付

    這篇文章主要介紹了利用jenkins和docker實現(xiàn)持續(xù)交付功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • docker搭建CMS點播系統(tǒng)帶播放器功能

    docker搭建CMS點播系統(tǒng)帶播放器功能

    熟悉docker的童鞋都知道,安裝是非常的便利的,也可以在線體驗的,今天通過本文給大家介紹docker搭建CMS點播系統(tǒng)帶播放器功能,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • 使用Docker Compose部快速署ELK(親測有效)

    使用Docker Compose部快速署ELK(親測有效)

    這篇文章主要介紹了Docker Compose部署ELK的詳細過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Docker鏡像上傳到阿里云的步驟詳解

    Docker鏡像上傳到阿里云的步驟詳解

    本篇文章主要介紹了Docker鏡像上傳到阿里云的步驟詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 將普通用戶加入Docker組,使用docker問題

    將普通用戶加入Docker組,使用docker問題

    這篇文章主要介紹了將普通用戶加入Docker組,使用docker問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Docker Compose 容器編排的實現(xiàn)

    Docker Compose 容器編排的實現(xiàn)

    本文主要介紹了Docker Compose 容器編排的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • windows安裝Docker與docker-compose套裝的詳細教程

    windows安裝Docker與docker-compose套裝的詳細教程

    這篇文章主要介紹了windows安裝Docker與docker-compose套裝的詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12

最新評論