如何為你的 Docker 容器設置代理網絡

一文搞定!如何為你的 Docker 容器設置代理網絡(及一個最常見的“坑”)

你是否遇到過這樣的窘境:在你的服務器上,代理工具(比如 Clash, V2Ray)運行得好好的,瀏覽器也能科學上網,但一旦把應用放進 Docker 容器,它就瞬間“失聯”,無法訪問外部世界?

別擔心,這是每個 Docker 新手都會遇到的經典問題。本文將用最直接的方式,教你如何通過修改 docker-compose.yml 文件,讓你容器內的應用也能輕松連接到代理,并幫你避開一個最容易被忽略的“大坑”。

核心問題:為什么容器無法“看到”宿主機的代理?

要解決問題,必先理解根源。Docker 的核心特性之一就是隔離(Isolation)。每個 Docker 容器都擁有自己獨立的網絡命名空間,就像一間與世隔絕的屋子。

當你嘗試在容器里訪問 localhost:7890127.0.0.1:7890 時,你訪問的是容器自己7890 端口,而不是宿主機(你的服務器)的 7890 端口。因為容器這間屋子里并沒有運行代理程序,所以這條路自然是死路一條。

(一個簡單的比喻:容器(Container)不知道宿主機(Host)的存在,它的 localhost 指向自己)

優雅的解決方案:Docker 的“特殊暗號” host.docker.internal

幸運的是,Docker 提供了一個優雅的解決方案來打破這層隔離。它提供了一個特殊的 DNS 名稱:host.docker.internal

當在容器內部使用這個地址時,Docker 會自動將它解析為宿主機的內部 IP 地址。這樣,容器就有了一個明確的、指向外部大樓前臺(宿主機)的“快速撥號按鈕”。

實戰演練:修改 docker-compose.yml

現在,我們來修改 docker-compose.yml 文件。看起來只需要兩步,但第三步才是成敗的關鍵。

假設你的代理在宿主機上監聽的端口是 7890(這是 Clash 等工具的常見默認端口,請根據你的實際情況修改)。

第 1 步:設置環境變量 (environment)

我們需要通過環境變量告訴容器里的應用程序:“當你需要上網時,請使用這個代理”。

# ...environment:# 告訴應用,HTTP/HTTPS流量走這個代理- HTTP_PROXY=http://host.docker.internal:7890- HTTPS_PROXY=http://host.docker.internal:7890# (推薦) 如果你的代理支持 SOCKS5,這是更通用的方法

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92956.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92956.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92956.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode Day3 -- 哈希表

目錄 1. 啥是哈希表? 2. 啥時候用哈希表? 2.1 存在性檢查 → 集合Set 2.2 鍵值映射 → 字典Dict 2.3 頻率統計 → Dict or Counter 3. LeetCode 3.1 集合 (1)2215 找出兩數組的不同 (2)1207 獨一無…

三子棋裝置(電賽24E題)K230/STM32全開源

三子棋裝置(電賽24E題)K230/STM32全開源,后續有具體代碼參數講解,幫助大家移植k230代碼import time, os, sysfrom media.sensor import * from media.display import * from media.media import *from machine import UART from m…

終端安全檢測與防御

1. 終端安全風險主要問題:企業網絡中80%的安全事件源于終端,終端成為黑客攻擊的重要目標。攻擊手段:勒索病毒:直接勒索用戶。橫向滲透:通過受控終端攻擊內部服務器。僵尸網絡危害:信息竊取、釣魚網站引導、…

Video_AVI_Packet(2)

博主聲明:內容來自網絡,僅供參考,僅適用于淺了解,如有錯誤,自行甄別,由此引起的后果概不負責 Video_AVI_Packet(2)一、Video Picture Aspect Ratio 與 Active Format Aspect Ratio1.…

八月補丁星期二:微軟修復 111 個漏洞

微軟將在2025 年 8 月補丁星期二修復 111 個漏洞,這一數量與近期平均水平大致相同。 與上個月的情況類似,微軟知道今天發布的漏洞中只有一個已被公開披露,但聲稱沒有證據表明存在野外利用。同樣,截至發布時,唯一的補丁…

《C++進階之繼承多態》【普通類/模板類的繼承 + 父類子類的轉換 + 繼承的作用域 + 子類的默認成員函數】

【普通類/模板類的繼承 父類&子類的轉換 繼承的作用域 子類的默認構造函數】目錄前言:------------------------一、繼承的定義和使用1. 什么使繼承?2. 為什么要引入繼承?3. 怎么使用繼承?① 父類(基類&#xf…

Ubuntu22.04安裝OBS Studio

OBS官網的最新的雖然支持Ubuntu系統,但是只支持最新的24.2版本的,而我的電腦上的Ubuntu的版本是22.04,所以在網上尋求解決辦法,看到了這一片博客,作為參考來實現ubuntu22.04安裝OBS,這里提示一下&#xff0…

Ansible 基本使用

Ansible 清單 靜態主機清單 主機清單支持多種格式,例如ini、yaml、腳本等。 本次課程使用 ini 格式。 #創建主機清單[lykcontroller ~ 13:36:01]# vim inventory#vim添加controllernode1node2node3node4?#測試連接單個服務器[lykcontroller ~ 14:08:18]$ ansibl…

網絡資源模板--基于Android Studio 實現的九寨溝App

目錄 一、測試環境說明 二、項目簡介 三、項目演示 四、部設計詳情(部分) 首頁 購票頁面 五、項目源碼 一、測試環境說明 電腦環境 Windows 11 編寫語言 JAVA 開發軟件 Android Studio (2020) 開發軟件只要大于等于測試版本即可(近幾年官網直接下載也…

系統架構設計師備考之架構設計實踐知識

1.信息系統架構設計理論與實踐1.1.基本概念信息系統架構定義目前關于信息系統架構較為權威的定義有: (1)信息系統架構是系統的結構,由軟件元素、元素外部可見屬性和元素間關系組成。 (2)信息系統架構是軟件…

【IgH EtherCAT】如何利用 RTAI 提供的實時任務和調度機制來構建一個高精度、確定性的工業控制應用

SVG圖展示了系統的分層架構:RTAI實時層:包含RT_TASK、信號量和定時器EtherCAT Master層:主站、域、從站配置和PDO映射EtherCAT網絡層:與實際硬件設備(EL3162模擬輸入、EL2004數字輸出)通信關鍵特點&#xf…

7款熱門智能電視文件管理器橫向評測

7款智能電視文件管理器橫向評測 在智能電視和電視盒子日益普及的今天,一款好用的文件管理器能讓您的數字生活更加便捷。本文為您評測了7款廣受歡迎的TV版文件管理器,助您找到最適合自己的工具。 1. ES文件瀏覽器TV版 ES文件瀏覽器是一款廣受歡迎的多功能…

Python 類元編程(導入時和運行時比較)

導入時和運行時比較 為了正確地做元編程,你必須知道 Python 解釋器什么時候計算各個代碼 塊。Python 程序員會區分“導入時”和“運行時”,不過這兩個術語沒有嚴 格的定義,而且二者之間存在著灰色地帶。在導入時,解釋器會從上到 下…

[git diff] 對比檢查變更 | 提交前復審 | 版本回退

git diff git diff 是 Git 版本控制系統中用于比較文件差異的核心命令,可以顯示工作目錄、暫存區(Index)和倉庫歷史之間的變化。 通過對比不同版本或狀態的文件內容,幫助開發者理解代碼變更。 比較工作目錄與暫存區 運行以下命令查…

【數據可視化-85】海底撈門店數據分析與可視化:Python + pyecharts打造炫酷暗黑主題大屏

🧑 博主簡介:曾任某智慧城市類企業算法總監,目前在美國市場的物流公司從事高級算法工程師一職,深耕人工智能領域,精通python數據挖掘、可視化、機器學習等,發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN…

物聯網之小白調試網關設備

小伙伴們,你們好呀!我是老寇!跟我一起學習調試網關設備 相信搞過物聯網的朋友,對網關設備非常熟悉,本人以小白的視角,手把手教你調試網關設備! 工作中使用的是Ubuntu操作系統,因此&a…

Node.js特訓專欄-實戰進階:22. Docker容器化部署

?? 歡迎來到 Node.js 實戰專欄!在這里,每一行代碼都是解鎖高性能應用的鑰匙,讓我們一起開啟 Node.js 的奇妙開發之旅! Node.js 特訓專欄主頁 專欄內容規劃詳情 我將從Docker容器化部署的基礎概念入手,介紹Node.js應用容器化的步驟,包括創建Dockerfile、構建鏡像、運行…

eclipse嵌入式編譯速度慢

eclipse 嵌入式 編譯 速度慢 同一個項目,eclipse編譯速度越來越慢,一開始幾秒鐘編譯完,后面要10分鐘。只需要將以下兩個程序卸載重新安裝即可。

編譯Android版本可用的高版本iproute2

背景: Android自帶的iproute2 太老,很多指令格式不支持 直接基于Android源碼,替換源碼下iproute2 代碼編譯新版,報錯太多,于是改用Android NDK工具編譯 環境: android-ndk-r25c-linux.zip 下載鏈接&am…

JavaScript的fetch函數的用法

基本語法fetch函數用于發起網絡請求,返回一個Promise對象。基本語法如下:fetch(url, options).then(response > response.json()).then(data > console.log(data)).catch(error > console.error(Error:, error));GET請求發起一個簡單的GET請求&…