AboutDockerProfessional illustrations
Docker Login 基本作用同用法
好喇,咁我哋就深入講下 Docker Login 基本作用同用法。簡單嚟講,docker login 呢個 CLI commands 就係你進入 Docker 世界嘅第一道閘門,主要作用就係做 身份驗證 (authentication)。點解咁重要?因為而家玩 容器技術,好少話全部嘢都自己由零開始 build 一個 映像檔,多數都會去 鏡像倉庫 拉啲現成、穩定嘅 官方映像檔 落嚟用,例如 nginx 或者各種數據庫。而最大、最常用嘅公共倉庫就係 Docker Hub。當你想拉取 (pull) 一啲非公開嘅映像檔,或者更重要係你想將自己 build 好嘅映像檔推送 (push) 上自己嘅 私有資料庫 或者 Docker Hub 嘅個人空間度,你就必須要證明「你係邊個」。呢個時候,docker login 就係你嘅身份證,用你嘅 account 同密碼(或者更安全嘅 security tokens)去完成驗證,之後你先可以進行 鏡像推送 同 鏡像管理 呢啲需要權限嘅操作。
咁具體點用呢?最基本嘅用法就係喺 命令行操作 入面,直接打 docker login,然後跟住提示輸入你嘅 Docker Hub 用戶名同密碼。但係高手通常唔會咁做,而係會直接指定你要登入去邊一個 Docker Registry。因為除咗官方嘅 Docker Hub,市面上有好多其他選擇,例如企業自己搭建嘅私有 Docker 註冊表,或者各大雲服務商提供嘅 雲端儲存庫。所以完整嘅 命令行登錄 指令會係 docker login [OPTIONS] [SERVER]。如果你唔指定 SERVER,佢預設就會去 https://index.docker.io/v1/,即係 Docker Hub。但假如你公司用緊一個內部 registry,地址係 registry.my-company.com,咁你就要打 docker login registry.my-company.com,然後輸入公司提供嘅帳號密碼。成功登入之後,Docker 會將你嘅 authentication 憑證安全地儲存喺你部電腦度,通常係喺一個叫 ~/.docker/config.json 嘅檔案裏面,呢個就係佢嘅 credential store 機制,方便你之後唔使次次都打密碼。
講到憑證管理 (credential management),呢度有少少嘢要留意。以前就咁儲存明文密碼其實唔係咁安全,所以而家 Docker Desktop 同最新版本嘅 Docker CLI 都會建議用更安全嘅方式,例如用作業系統提供嘅密碼管理工具(像 macOS 嘅 Keychain 或者 Windows 嘅 Credential Manager)嚟做 credential store。呢個設定可以喺 docker login 時用 指令參數 調整,或者事先設定好。對於 運維 人員嚟講,特別係做 container orchestration 同自動化部署,可能唔會用人手互動式登入,而係用 security tokens(例如 Personal Access Token)或者服務帳戶嘅密碼。做法就係用 echo [你的密碼或token] | docker login [SERVER] -u [用戶名] --password-stdin,咁樣就可以喺 Script 裏面安全地完成 登錄登出 流程,避免密碼留喺歷史記錄度。
最後都要提下登出 (logout) 同其他相關操作。當你喺一部公用電腦或者 CI/CD 嘅構建伺服器上完成操作後,為咗安全起見,最好就執行 docker logout [SERVER] 嚟清除本地儲存嘅登入憑證。另外,成功 login 之後,你除咗可以 push/pull 映像檔,仲可以用 docker search 指令去搜尋 Docker Hub 上面嘅映像檔,睇下佢哋嘅 星級評等 同描述,呢個功能通常都要求你先登入。總括嚟講,無論你係剛 Sign Up 嘅新手,定係管理緊大型 映像檔資料庫 嘅資深工程師,掌握 docker login 嘅各種用法同背後嘅 身份驗證 原理,都係有效運用 容器技術、做好 鏡像管理 嘅基本功。記住,安全地管理好你嘅登入憑證,就等於守好咗你容器化應用嘅第一道大門。
AboutDockerProfessional illustrations
2026年最新登入語法格式
講到2026年最新嘅登入語法格式,我哋首先要搞清楚,而家Docker嘅生態同幾年前已經有啲唔同,尤其係身份驗證(authentication)同憑證管理(credential management)呢兩方面,多咗啲新嘅安全考量同方便嘅設定。最基本嗰條docker login指令,核心格式其實無變,都係「docker login [選項] [伺服器地址]」,但係喺實際應用上,同埋背後嘅運作細節,就有唔少嘢要更新下認知。
首先,最常見就係登入Docker Hub呢個官方映像檔資料庫。如果你係用緊最新版嘅Docker Desktop,佢個介面同背後嘅CLI整合得更加好。喺命令行操作時,你直接打「docker login」就得,佢會預設指向Docker Hub。系統會順序提示你輸入Username同Password。但係要留意啦,自從安全要求提升咗,如果你無開雙重驗證,就照用密碼登入;但係好多團隊為咗安全,都會用security tokens(即係Access Tokens)代替密碼。所以喺2026年,你嘅登入過程可能係咁:你打「docker login」,然後Username就照打你嘅Docker Hub賬號名,但係Password嗰欄,就要貼上你事先喺Docker Hub網站生成嘅Token。呢個做法已經成為咗容器技術運維嘅標準安全實踐,可以有效防止密碼直接暴露喺命令行歷史或者腳本入面。
除咗預設嘅Docker Hub,登入私有資料庫(Private Registry)或者第三方鏡像倉庫(例如Google Container Registry、AWS ECR等)就更加係日常。呢個時候,語法裡面嘅「伺服器地址」就關鍵啦。例如你公司用緊一個自建嘅Docker Registry,地址係「registry.mycompany.hk」,咁完整嘅登入指令就係「docker login registry.mycompany.hk」。輸入呢條指令後,同樣要你提供喺該registry註冊嘅賬號同密碼(或Token)。呢個步驟對於之後要上傳映像檔(push image)或者拉取私有鏡像係必須嘅,完成身份驗證後,Docker就會將你嘅憑證安全地儲存喺本機。
講到憑證儲存,2026年嘅credential store設定都值得一講。默認情況下,Docker會將你嘅登入憑證加密後存喺本機一個檔案度。但係如果你部機有多人使用,或者想更統一管理,你可以設定Docker去用你個作業系統嘅金鑰庫(例如macOS嘅Keychain、Windows嘅Credential Manager、或者Linux嘅pass/secretservice)。呢個設定通常唔係喺docker login指令度直接搞,而係要事先配置好Docker嘅daemon設定檔。搞掂之後,你每次打docker login,個憑證就會存入系統級嘅安全地方,唔使驚唔小心刪咗個Docker設定就連唔到個鏡像倉庫。
另外,docker login指令有幾個常用嘅選項(option)到而家都依然好有用。例如「-u」或者「--username」可以直接喺命令行指定用戶名,避免互動式提示。配合「--password-stdin」呢個選項,就可以用更安全嘅方式傳入密碼,尤其係用喺自動化腳本入面。點樣用呢?舉個例,你可以將個Token放喺一個環境變數或者一個暫時檔案度,然後用「cat token_file.txt | docker login -u myusername --password-stdin registry.mycompany.hk」。咁樣做可以避免個密碼或者Token出現喺進程列表或者shell歷史記錄度,對於運維自動化流程嘅安全性係一大提升。
有登入自然就有登出啦,docker logout嘅語法就簡單好多,就係「docker logout [伺服器地址]」。如果你唔指定伺服器地址,佢就會登出預設嘅Docker Hub。執行之後,Docker就會從本機嘅credential store入面移除該registry嘅登入憑證。呢個動作對於切換唔同賬號(例如切換公司賬號同個人賬號)或者清理憑證好有用。
最後都要提下,雖然我哋成日講命令行登錄,但係對於新手或者鍾意用GUI嘅朋友,Docker Desktop嘅圖形介面依然提供好方便嘅登入同賬戶管理功能。你喺設定入面可以好清晰咁見到你已經登入咗邊啲registry,亦都可以直接喺介面度進行Sign in或者Sign Out。不過,無論你用GUI定係CLI,背後嘅原理同最終儲存憑證嘅方式都係一致嘅。理解清楚2026年呢套登入語法格式同背後嘅身份驗證機制,對於有效管理你嘅鏡像管理工作流,安全地進行鏡像推送,以及同各種雲端儲存庫打交道,都係必不可少嘅基礎知識。
AboutDesktopProfessional illustrations
命令列直接輸入帳號密碼
講到命令列直接輸入帳號密碼,呢個係最直接嘅 docker login 方法,尤其適合啱啱開始用 Docker 或者需要快速登入嘅朋友。喺終端機或者命令提示字元入面,你只需要打 docker login,跟住按 Enter,系統就會順序問你攞 Docker ID 同埋密碼。呢個過程其實就係同 Docker Hub 或者你自己設定嘅 Docker Registry 進行身份驗證 (authentication),確保你有權限去拉取私有映像檔或者推送你自己嘅鏡像上去。好多新手會去 CSDN 或者菜鳥教程搵資料,但係記住,2026年嘅今日,Docker Desktop 同命令列嘅整合已經更加順暢,基本概念雖然無變,但係一啲安全設定同最佳實踐就有更新。
具體嚟講,當你輸入 docker login 之後,命令行會提示你輸入 Username,呢度就係你註冊 Docker Hub 時用嘅 Docker ID 或者電郵地址 (email address)。輸入完再按 Enter,就會跳去 Password 欄位。呢度要留意,喺命令行打密碼係唔會顯示任何星號或者圓點嘅,為咗安全起見,畫面會好似無反應咁,其實你打緊嘅字已經輸入緊,所以千祈唔好以為個鍵盤壞咗,打完密碼直接按 Enter 就得。成功登入嘅話,你會見到「Login Succeeded」嘅訊息,即係話你嘅登入憑證 (credential) 已經被本地嘅 Docker 守護進程接收並驗證成功。呢啲憑證通常會安全地儲存喺你電腦嘅 credential store 入面,例如 macOS 嘅鑰匙圈或者 Windows 嘅 Credential Manager,方便你之後嘅操作唔使次次重新登入。
不過,直接喺命令行互動式輸入雖然方便,但對於自動化腳本或者想一氣呵成完成登入動作,就有啲唔夠效率。所以,Docker CLI 其實支援一種更直接嘅方法:將用戶名同密碼一齊放喺同一行指令入面。不過,我必須強烈提醒,呢種方法有極高安全風險,絕對唔建議喺生產環境或者共享電腦上使用。具體語法係類似 docker login -u 你的DockerID -p 你的密碼 咁。點解危險?因為你嘅密碼會以明文形式出現喺命令行歷史記錄入面,任何有權限睇到你部機歷史記錄嘅人,或者係一啲會記錄命令行嘅系統,都會輕易睇到你嘅密碼。就算係為咗測試,用呢個方法都要萬分小心,用完最好即刻清除命令行歷史。
對於追求安全同自動化嘅團隊,2026年嘅最佳實踐係利用安全令牌 (security tokens) 或者存取令牌,而唔係直接使用帳戶主密碼。你可以去 Docker Hub 嘅帳戶設定度,生成一個專門用於命令行操作嘅存取令牌,然後用呢個令牌代替密碼進行登入。咁樣做,萬一令牌不幸洩漏,你可以隨時撤銷佢,而唔使驚你個主帳戶密碼出事,影響到所有關聯嘅服務。呢個方法尤其適合需要將登入步驟整合到 CI/CD 管道嘅運維團隊,可以大大提升鏡像管理嘅安全性。
另外,登入嘅目標唔一定係官方嘅 Docker Hub。你可能需要登入自己公司搭建嘅私有 Docker 註冊表 (Docker Registry),又或者係其他第三方嘅雲端儲存庫。呢個時候,你就要喺 docker login 後面指定 registry 嘅地址。例如,如果你公司用自己搭建嘅 registry 來存放內部應用嘅映像檔,登入命令就會係 docker login myprivate-registry.example.com。跟住同樣輸入該 registry 嘅用戶名同密碼。呢個操作嘅核心目的都係一樣:獲取拉取或推送鏡像去該特定鏡像倉庫嘅授權。
成功登入之後,你就可以進行一系列需要權限嘅操作啦。例如,用 docker search 去搵吓 Docker Hub 上面有咩官方或者社區提供嘅映像檔,睇吓佢哋嘅星級評等。又或者,更常見嘅係,你可以將你本地 build 好嘅應用程式鏡像,用 docker push 指令上傳映像檔到你嘅個人倉庫或者團隊倉庫入面。呢個就係容器技術工作流嘅重要一環:開發、打包、驗證、然後推送到中央倉庫俾其他隊友或者部署伺服器使用。當然,如果你要切換帳戶或者登出,只需要簡單輸入 docker logout,就可以清除當前儲存嘅登入憑證,確保帳戶安全。
總括嚟講,命令列直接輸入帳號密碼係掌握 Docker 身份驗證嘅基礎。無論你係想管理你喺 Docker Hub 嘅公共映像檔資料庫,定係要同公司內部嘅私有資料庫打交道,login 同 logout 呢對指令都係必學嘅。記住,方便同安全往往要取得平衡,互動式輸入已經比將密碼寫死喺指令入面安全得多。而家已經係2026年,隨著容器編排 (container orchestration) 同雲原生技術愈嚟愈普及,妥善管理好你嘅登入憑證 (credential management),就係保護好你整個應用交付管道嘅第一步。
AboutRegistryProfessional illustrations
用參數安全傳入登入資料
講到用 Docker 命令行登錄,好多朋友可能慣咗直接打 docker login,然後跟住系統提示逐個輸入 username 同 password。咁樣做當然無問題,但係喺一啲自動化腳本或者 CI/CD 流水線入面,要人手交互輸入就唔多方便,而且仲可能將敏感資料留喺命令歷史度,有安全風險。所以,今次我哋就深入傾下點樣 用參數安全傳入登入資料,等你可以更穩陣、更自動化咁處理身份驗證呢一步。
首先,最基本嘅安全傳參方法,就係直接喺 docker login 指令後面跟住 username 同 password 參數。格式係 docker login -u 你嘅用戶名 -p 你嘅密碼。例如你要登入 Docker Hub 呢個最大嘅 鏡像倉庫,你可以咁樣打命令。咁樣做嘅好處係完全唔需要人手介入,適合用喺後台腳本執行。不過,我要即刻提一提你,咁樣做有一個好明顯嘅安全漏洞:你嘅密碼會以明文形式出現喺命令入面,如果其他人有權限睇到你部機嘅進程列表或者命令歷史,你個密碼就好似公開咗咁。所以,除非你喺一個絕對安全、隔離嘅環境下執行,否則我唔建議喺生產環境直接咁樣用。
咁點樣先至算係安全呢?對於自動化流程,最佳實踐係利用 安全令牌 或者存取令牌,而唔係直接用你個主賬戶密碼。好似 Docker Hub 呢類 Docker 註冊表,通常都支援你喺賬戶設定入面生成專門用於存取嘅 Access Tokens。呢個令牌可以設定權限,例如只准讀取唔准寫入,或者只針對某個私有 映像檔資料庫。用令牌代替密碼,萬一唔小心洩漏咗,你可以隨時撤銷個令牌,而唔使改你個主賬戶密碼,安全性高好多。用嘅時候,就係將個令牌當作密碼,用 -p 參數傳入去。
不過,問題又嚟啦,個令牌或者密碼始終都係喺命令行度出現過。為咗進一步加強 credential management,Docker 本身提供咗一個幾好用嘅功能,叫做 credential store。佢嘅作用係將你嘅登入憑證加密儲存喺你個系統嘅安全地方,例如 macOS 嘅 Keychain 或者 Linux 嘅 Secret Service。當你第一次用普通 docker login 成功登入之後,憑證就會被安全保存。之後喺腳本入面,你甚至可能唔需要再顯式傳入 -u 同 -p,因為 Docker CLI 會自動去 credential store 攞返相關 registry 嘅登入資料。當然,呢個方法對於完全無痕跡嘅自動化部署可能仲係差少少,因為始終需要第一次人手介入去初始化。
對於追求極致安全同自動化嘅 運維 團隊,更常見嘅做法係利用環境變數嚟傳遞敏感資料。你可以將 username 同 password(或令牌)設定為環境變數,然後喺 docker login 指令入面引用佢哋。例如,喺腳本入面你先設定 DOCKER_USER 同 DOCKER_PW 呢兩個環境變數,然後執行 docker login -u $DOCKER_USER -p $DOCKER_PW。咁樣做,密碼就唔會直接寫死喺腳本文件或者命令歷史入面。如果配合一啲秘密管理工具,好似 HashiCorp Vault 或者雲服務商提供嘅密鑰管理服務,喺運行時先動態注入呢啲環境變數,安全性就再上一層樓。呢種方法尤其適合 容器編排 平台,例如 Kubernetes 入面通過 Secret 對象嚟掛載登入憑證。
另外一種進階玩法,係針對唔同嘅 鏡像倉庫 進行登入。我哋知道,除咗公眾嘅 Docker Hub,好多公司都會搭建自己嘅私有 Docker Registry,又或者用雲服務商提供嘅 雲端儲存庫,例如 AWS ECR、Google Container Registry 等等。每個 registry 嘅登入方法可能稍有唔同。docker login 指令後面可以跟住具體嘅 registry 伺服器地址。例如,你公司內部用緊一個 nginx 反向代理做嘅 registry,地址係 registry.mycompany.com,咁登入命令就係 docker login registry.mycompany.com -u 員工編號 -p 令牌。通過參數,你可以好靈活咁切換唔同嘅 映像檔資料庫 進行 身份驗證,方便你之後進行 鏡像推送 或者拉取私有鏡像。
最後都要提提一啲實用小貼士同潛在陷阱。第一,喺任何情況下,都應該避免將含有密碼嘅完整命令寫入到會被人睇到嘅日誌文件度。第二,如果你用嘅係 Docker Desktop,佢嘅圖形界面幫你管理咗好多登入嘅繁瑣步驟,但係背後其實都係用緊我哋上面講嘅嗰套 credential store 機制。第三,記得登出。當你喺公用電腦或者伺服器完成操作後,用 docker logout 命令清除當前會話嘅登入狀態,係一個好習慣。尤其係當你登入咗一個私有 registry,logout 可以防止後續嘅意外操作。總而言之,用參數安全傳入登入資料 呢個動作,核心思想就係「自動化」同「去敏感化」。透過令牌、環境變數同埋系統嘅憑證管理工具,你可以好有效率咁將 docker login 呢個步驟整合到你嘅開發同部署流水線入面,同時又大大減低憑證洩漏嘅風險,令到整個 容器技術 嘅應用流程更加順暢同穩陣。
AboutregistryProfessional illustrations
點解要避免密碼明碼輸入
好啦,各位 DevOps 同埋 SRE 嘅師兄師姐,我哋而家就深入傾下一個好重要,但係好多人會貪方便而忽略嘅環節:點解要避免密碼明碼輸入。喺 Docker 嘅世界入面,無論你係用緊 Docker Hub 呢個全球最大嘅鏡像倉庫,定係自己公司內部搭建嘅 Docker Registry(例如用 nginx 做反向代理嘅私有庫),身份驗證 (authentication) 都係安全嘅第一道閘。當你喺 命令行操作 打 docker login 嗰陣,如果就咁將密碼當成明碼 (plain text) 直接輸入或者寫死喺 Script 入面,咁就等同將你屋企條鎖匙掛喺門口,風險極高。
首先,我哋要明白,Docker 嘅 credential management 機制其實已經好完善。當你正常透過 Docker Desktop 或者 CLI commands 互動式登入時,系統會安全地將你嘅登入憑證(authentication token)儲存喺你作業系統嘅 credential store 入面,例如 macOS 嘅 Keychain、Windows 嘅 Credential Manager、或者 Linux 嘅 pass/secretservice。呢個過程係加密嘅,唔會暴露你嘅密碼。但係,好多時為咗自動化,例如喺 CI/CD pipeline 或者一啲自動化運維腳本裏面,啲人就會貪快,直接用好似 echo "mypassword" | docker login -u myuser --password-stdin 呢類指令,或者更差嘅,將密碼直接寫喺命令行參數。咁樣做,你嘅密碼就會有機會留喺 Shell 歷史記錄、CI/CD 系統嘅日誌、或者係進程列表入面,任何有權限存取呢啲記錄嘅人(包括黑客或者內部其他團隊成員)都可以一目了然,直接攞到你個 Docker Hub 賬戶或者私有資料庫嘅通行證。
其次,從容器技術嘅協作同安全角度睇,你嘅密碼唔單只係一個賬號註冊時用嘅email address同密碼咁簡單。喺 Docker 註冊表入面,你個賬戶關乎到你所有上傳映像檔嘅權限。如果係公司賬戶,可能仲有存取重要官方映像檔或者內部核心服務映像檔資料庫嘅權限。一旦密碼洩漏,攻擊者就可以用你個身份隨意 push 惡意鏡像、pull 機密鏡像、甚至刪除你辛苦建立嘅倉庫。想像下,如果一個被入侵嘅鏡像流入生產環境,對公司嘅打擊可以係毀滅性。而且,好多時我哋會用呢個賬戶去管理唔同項目嘅鏡像倉庫,密碼明碼化就等於將所有鎖匙綁埋一齊,失咗一條就全軍覆沒。
咁有咩實用嘅解決方法呢?絕對唔好喺 CSDN、菜鳥教程 或者任何論壇 copy 嗰啲包含明碼密碼嘅範例指令落你嘅生產環境!第一,應該優先使用 Docker 提供嘅安全憑證儲存。對於自動化場景,正確做法係利用安全令牌 (security tokens) 或者存取令牌 (Access Tokens),而唔係直接用主密碼。好似 Docker Hub 呢類雲端儲存庫,通常都喺賬戶設定入面提供生成 Token 嘅功能呢個 Token 可以設定權限(例如只讀、讀寫)同有效期,萬一洩漏,影響範圍同時間都有限,你可以隨時撤銷佢,而唔使改主密碼。第二,對於 CI/CD 系統(例如 Jenkins、GitLab CI、GitHub Actions),一定要用佢哋提供嘅 Secrets Management 功能,將 Token 或者密碼設定成環境變數,而唔好寫死喺腳本檔案入面。第三,如果係團隊協作,考慮使用服務賬戶 (Service Accounts) 並配合 container orchestration 平台(如 Kubernetes)嘅 Secret 物件來管理拉取鏡像嘅憑證。
總而言之,docker login 呢個動作雖然簡單,但背後涉及嘅身份驗證安全原則絕對不能馬虎。養成良好習慣,永遠避免密碼明碼輸入,係保護你個人同企業鏡像管理資產最基本、亦係最重要嘅一步。記住,安全唔係一個功能,而係一個過程,由每一個 login 同 logout、每一次 鏡像推送 嘅細節做起。
AboutnginxProfessional illustrations
設定私人Registry登入教學
好啦,講完點樣用 Docker Hub 呢類公共 鏡像倉庫,而家我哋深入講下點樣設定同登入私人 Docker Registry。呢個對於公司團隊或者個人項目嚟講好重要,因為你可以將自己嘅 映像檔 擺喺自己控制到嘅地方,無論係內網伺服器定係 雲端儲存庫,私隱同安全性都高好多。設定私人 Registry 嘅過程,其實就係建立一個專屬你嘅 映像檔資料庫,而 docker login 呢個 身份驗證 步驟就係開啟呢個私人倉庫大門嘅鎖匙。
首先,你要有個私人 Registry 先可以登入。最簡單直接嘅方法,就係用 Docker 官方提供嘅 registry 映像檔 自己喺伺服器度起一個。用命令行操作好簡單,一句 docker run -d -p 5000:5000 --name my-registry registry:2 就已經喺本地埠 5000 起好一個最基本嘅 Docker Registry。當然,實際生產環境你會想加 TLS 加密、用 nginx 做反向代理、或者設定 authentication,但呢啲進階設定我哋稍後再提。起好之後,呢個 localhost:5000 或者你伺服器嘅 IP 地址,就係你私人 鏡像倉庫 嘅地址。
跟住落嚟就係關鍵嘅 登錄登出 步驟。你要同呢個私人 Registry 打交道,就一定要通過 docker login 呢關。命令行登錄 嘅格式同登入 Docker Hub 差唔多,但就要指明你個 Registry 嘅地址。例如你個私人倉庫地址係 mycompany-registry.com,咁你就要喺 CLI commands 度打 docker login mycompany-registry.com。打完呢句指令,命令行就會提示你輸入使用者名稱同密碼。呢度要注意,私人 Registry 嘅 賬號註冊 同認證系統,通常唔係靠 Docker, Inc.,而係要靠你自己設定。例如你可以用 HTTP 基本認證檔案、或者整合 LDAP、甚至用 JWT token 呢啲方法去管理邊個有權限 登入。
講到 credential management(憑證管理),Docker Desktop 同 Docker 引擎本身有個好方便嘅功能叫 credential store。當你成功用 docker login 一次之後,你嘅登入資訊(authentication token 或者使用者名稱密碼)會安全咁儲存起嚟,下次你再需要 推送映像檔 或者拉取鏡像嘅時候,就唔使次次重新輸入。不過,如果你要登出某個 Registry,就要用 docker logout mycompany-registry.com,咁樣就會清除本地儲存嘅該倉庫登入憑證,對於 運維 安全好有幫助,特別係喺公用或者共享嘅開發機器上。
對於進階使用者,設定有 身份驗證 嘅私人 Registry 會涉及更多 命令行操作。例如,你可能需要先產生一組 security tokens(安全令牌)或者用 htpasswd 工具建立一個密碼檔案。然後喺啟動你嘅 Registry 容器時,透過掛載檔案同設定環境變數,將認證機制加落去。呢個過程確保咗只有授權嘅使用者同系統(例如你嘅 CI/CD 流水線)先可以 上傳映像檔 或者拉取私有鏡像,對於企業 容器技術 應用嘅安全管控係必不可少嘅一環。
最後提多個實用情景:有時我哋並唔係由零開始建立 Registry,而係使用雲服務商提供嘅托管 鏡像倉庫 服務,例如阿里雲容器鏡像服務、Google Container Registry 等等。呢類服務本身已經處理好 authentication,通常會提供專屬嘅登入指令。佢哋嘅 登錄登出 流程本質上同自建一樣,都係用 docker login 指向佢哋提供嘅特定域名,然後跟指示輸入 email address 或者存取金鑰。無論你用邊種方式,掌握 docker login 同私人 Docker 註冊表 嘅設定,都係你邁向專業 鏡像管理 同 container orchestration 嘅重要一步,令你嘅開發同部署流程更加順暢同安全。
AboutCSDNProfessional illustrations
常見登入失敗錯誤解決
好啦,各位Docker用家,無論你係用緊Docker Desktop嘅圖形介面,定係習慣喺命令行操作嘅高手,相信都試過喺執行docker login呢個指令嗰陣,遇到一啲古靈精怪嘅登入失敗錯誤。呢啲問題唔單止阻住你同Docker Hub或者自己公司嘅私有鏡像倉庫(Private Docker Registry)互動,仲可能影響到你之後嘅鏡像推送(image push)同埋日常運維工作。今次我哋就一齊拆解幾個最常見嘅登入失敗情況,同埋點樣一步步去解決佢。
首先,最經典嘅錯誤莫過於「Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password」。呢個訊息好直接,就係話你嘅用戶名或者密碼錯咗。但係好多新手會忽略一點:如果你係用電郵地址(email address)去Docker Hub註冊(Sign Up)嘅,咁你登入(Sign in)時要用返你嘅用戶名(Username),而唔係電郵地址本身,呢個係好多人中伏嘅位。另外,如果你改過密碼,或者喺Docker Hub啟用咗雙重身份驗證(2FA),你就要確保輸入嘅係最新密碼,或者喺CLI commands入面使用個人存取令牌(security tokens)而唔係普通密碼。記住,喺命令行登錄時,系統唔會好似網頁版咁有明確提示叫你用令牌,呢點要自己留意。
另一個常見問題同身份驗證(authentication)嘅憑證儲存有關,尤其係Windows同macOS用Docker Desktop嘅朋友。你可能會見到「Error saving credentials: error storing credentials...」或者類似嘅訊息。呢個問題通常係因為Docker內置嘅credential store(例如Windows嘅WinCred、macOS嘅keychain)出現咗設定衝突或者權限問題。解決方法可以試下去Docker Desktop嘅設定(Settings)入面,喺「Resources」>「File Sharing」度,確保你嘅用戶目錄有被分享;或者更直接啲,喺命令提示字元(CMD)或者PowerShell度設定一個環境變數,暫時將憑證儲存模式改為「file」,即係唔依賴系統金鑰庫,而係用純文字檔案儲存(當然,安全性會低少少,只係用嚟測試問題根源)。呢個方法可以幫你快速判斷係咪credential management個環節出咗事。
如果你唔係登入官方嘅Docker Hub,而係要登入自己公司搭建嘅私有映像檔資料庫,或者係用nginx做反向代理嘅自建Docker Registry,咁你可能會遇到證書問題。錯誤訊息可能係「x509: certificate signed by unknown authority」。呢個情況好常見於內部測試環境,因為你嘅私有倉庫用咗自簽署(self-signed)嘅SSL證書,而Docker客戶端唔信任呢張證書。解決方法有兩個方向:一係喺你嘅Docker主機(可能係Linux伺服器)上,將該自簽證書加到系統嘅受信任根證書清單入面;另一個更快捷(但唔太安全,只適合測試)嘅方法,就係喺Docker Daemon嘅啟動參數或者設定檔入面,明確指明你嘅私有倉庫地址係一個「insecure registry」。不過要提提你,呢個做法會令到你同該倉庫之間嘅通訊冇咗加密,所以千祈唔好喺生產環境或者有敏感鏡像嘅時候用。
有時問題可能唔喺你部客戶端,而係喺網絡或者代理(Proxy)設定度。尤其係公司網絡,經常需要設定代理伺服器先可以出到公網訪問Docker Hub。如果你冇正確設定Docker Daemon嘅HTTP_PROXY同HTTPS_PROXY環境變數,咁docker login指令就會因為連唔到registry而失敗。你需要根據你嘅操作系統,去修改Docker服務嘅系統設定檔,將代理地址加返入去,然後重啟Docker服務先會生效。唔好以為喺命令行自己export咗環境變數就得,因為Docker Daemon係一個後台服務,要喺佢啟動嘅時候就讀到先有用。
最後,仲有一個比較隱蔽嘅問題,就係你本地嘅Docker配置檔(通常喺 ~/.docker/config.json)出現損毀或者格式錯誤。呢個檔案負責記錄你嘅登入狀態同憑證。如果你試過多個倉庫地址,或者之前嘅登入登出(login/logout)操作不完整,有可能令到個config.json檔案亂咗。最簡單嘅處理方法就係將呢個檔案暫時搬走或者刪除(記得備份先),然後再重新執行docker login指令。Docker會自動生成一個全新嘅、乾淨嘅配置檔。好多時,尤其係喺切換唔同嘅Docker註冊表(Docker Registry)賬戶時,呢個方法可以一勞永逸地解決啲奇難雜症。
總而言之,遇到docker login失敗唔使慌,跟住錯誤訊息呢個最大嘅線索,由最簡單嘅「賬號密碼有冇錯」開始檢查,再到credential store、網絡證書、代理設定,最後到本地配置檔,一步步咁排查落去,實可以搵到問題根源。記住,妥善管理好你嘅身份驗證憑證,係安全使用容器技術(container technology)同進行鏡像管理(image management)嘅第一步,絕對唔可以求求其其。
About菜鳥教程Professional illustrations
Docker Login 安全注意事項
講到 Docker Login 安全注意事項,我哋首先要明白,身份驗證 (authentication) 呢一步其實係保護你整個 容器技術 工作流程嘅第一道閘。好多新手,甚至係有經驗嘅 運維 朋友,都可能因為貪方便而忽略咗啲細節,結果令到 credential management 出問題,甚至洩露咗重要嘅 映像檔資料庫 存取權。
最基本嘅一點,就係你點樣處理你嘅登入憑證。當你喺 命令行 打 docker login 呢個 CLI command 嘅時候,系統預設會將你嘅認證資料(例如你嘅 Docker Hub 帳號同密碼,或者 security tokens)以明文形式儲存喺你個用戶目錄嘅一個配置文件度。雖然方便咗之後嘅操作(例如 鏡像推送 去 雲端儲存庫 唔使次次打密碼),但萬一你部機被人入侵,或者係共用嘅開發機,啲憑證就好易被人攞到。所以,一個好重要嘅安全習慣係,喺用完 Docker Registry(尤其係公共嘅 Docker Hub)之後,如果係喺公共或唔安全嘅電腦上操作,記得用 docker logout 命令登出,清除本地暫存嘅認證。呢個 登錄登出 嘅習慣,同我哋用網上銀行完咗要登出係一樣道理。
其次,強烈建議唔好直接用帳號密碼做 身份驗證,尤其係你個 Docker Hub 帳戶可能連結咗其他重要服務。而家好多 鏡像倉庫 服務,包括 Docker Hub 同自建嘅 私有資料庫(例如用 nginx 做反向代理嘅 registry),都支援更安全嘅 Access Tokens 或者 安全令牌 (security tokens)。你可以喺帳戶設定度生成一個專門用嚟做 命令行登錄 嘅 token,設定好佢嘅權限(例如只可以 pull 某啲 官方映像檔,或者可以 push 去特定嘅 映像檔資料庫),然後用呢個 token 代替密碼嚟登入。咁樣做嘅好處係,萬一呢個 token 不幸洩露咗,你可以隨時喺後台撤銷佢,而唔使驚到要改你成個主帳戶嘅密碼,波及其他服務,安全管理上就靈活同精細好多。
另外,關於 credential store(憑證儲存庫)嘅設定,Docker Desktop 同 Docker CLI 其實支援將你嘅登入資料加密儲存喺你個作業系統嘅密碼管理員度,例如 macOS 嘅 Keychain 或者 Windows 嘅 Credential Manager。咁樣做比起擺喺普通文字檔安全得多。你應該檢查同啟用呢個功能,確保你嘅 Docker 註冊表 登入資料得到妥善加密保管。好多網上嘅 CSDN 或者 菜鳥教程 可能只係教你快快 Sign in 就算,但作為專業使用者,我哋必須要深入一層去設定呢啲安全選項。
對於企業或者團隊嚟講,管理 鏡像管理 同存取權限就更加要小心。如果你哋係用自建嘅 私有資料庫 或者第三方 雲端儲存庫,一定要實施嚴格嘅權限分級。唔好個個開發者都用同一個高權限帳號去 上傳映像檔。應該根據團隊角色,分配合適嘅讀寫權限。同時,要定期審查同清理唔活躍嘅帳號同過期嘅 security tokens,減少被盜用嘅風險。呢啲都係 container orchestration 環境下,身份驗證 環節不可或缺嘅安全實踐。
最後,要提防「中間人攻擊」或者 registry 地址被劫持。當你進行 docker login 時,確保你連接嘅 registry 地址係正確無誤嘅,特別係當你公司用緊自定義域名嘅內部 鏡像倉庫。唔好隨便噏一個地址就登入,以免將憑證送咗去黑客架設嘅假伺服器度。總括而言,Docker Login 雖然只係一個簡單嘅 指令參數 動作,但背後牽涉到嘅 credential management 同 賬號註冊 (Sign Up) 時嘅安全意識,絕對係保障你 容器技術 資產安全嘅重中之重。養成好習慣,善用 token 同系統嘅 credential store,先可以安心咁去 search、pull 同管理你嘅 鏡像倉庫,唔使驚星星評等幾高嘅映像檔背後有伏。
About映像檔資料庫Professional illustrations
用憑證檔案自動化登入
講到用憑證檔案自動化登入,呢個對於成日要同 Docker Hub 或者其他 Docker Registry 打交道嘅運維同開發團隊嚟講,真係可以慳返唔少手動輸入嘅時間同避免人為出錯。簡單啲講,就係唔使次次都手動打 docker login 然後輸入 username 同 password,尤其係喺 CI/CD 管道、自動化腳本或者伺服器上面,自動化登入係必不可少嘅一環。喺 2026 年嘅今日,容器技術同 DevOps 流程已經成熟到一個點,手動操作根本追唔上效率要求,所以點樣安全又方便地管理身份驗證憑證,就成為咗一個關鍵課題。
首先,你要明白 Docker 本身已經內置咗一個幾好用嘅 credential management 機制。當你第一次用 docker login 成功登入之後,Docker 預設會將你嘅認證資訊加密儲存喺你個系統嘅一個安全位置,例如 Linux 嘅 ~/.docker/config.json 檔案入面。呢個檔案入面就會有你登入過嘅 registry 伺服器地址同對應嘅認證 token。之後你再做任何需要身份驗證嘅操作,例如 docker push 映像檔去你嘅私有資料庫,或者拉取私有嘅官方映像檔,Docker CLI 就會自動從呢個 credential store 拎返啲認證出嚟用,唔使你次次重新登入。呢個已經係最基本嘅「半自動化」啦。
但係,對於真正嘅自動化場景,例如係喺一部新嘅伺服器或者一個乾淨嘅 CI runner 入面,你唔能夠依賴手動先登入一次。呢個時候,憑證檔案就派上用場。最直接嘅方法,就係預先準備好一個包含認證資訊嘅檔案,然後透過環境變數或者直接修改設定檔嘅方式,讓 Docker 命令讀取到呢啲認證。其中一個常見做法係使用 --password-stdin 參數配合管道命令,例如 echo $DOCKER_PASSWORD | docker login --username $DOCKER_USER --password-stdin,咁樣就可以安全地將密碼傳入去,避免密碼出現喺命令行歷史入面。不過,更符合「憑證檔案」概念嘅,係直接處理 config.json 檔案。
你可以將一個已經包含有效認證嘅 config.json 檔案,直接放置到目標機器嘅 ~/.docker/ 目錄底下。呢個檔案裏面嘅 auths 部分,就記錄咗各個 registry 嘅加密登入憑證。不過要小心處理呢個檔案嘅權限,一定要設定為只有擁有者先可以讀寫,以保障安全。另外,喺團隊協作或者 Infrastructure as Code 嘅環境下,直接分享 config.json 唔係好安全,因為裏面包含咗個人嘅認證 token。更好嘅做法係利用 Docker 支援嘅憑證助手(credential helper)機制。
Docker 嘅 credential helper 就係一個專門用來安全儲存同提取憑證嘅小工具。例如,你可以設定用你個作業系統嘅金鑰環(像 macOS 嘅 Keychain、Windows 嘅 Credential Manager)或者第三方嘅秘密管理工具(像 HashiCorp Vault、AWS Secrets Manager)來做儲存。設定方法係喺 config.json 入面指定 credsStore 或者針對某個特定 registry 指定 credHelpers。咁樣,當 Docker 需要認證時,就會呼叫你指定嘅 helper 程式去拎密碼,而唔係將密碼明文儲存在 config.json。對於自動化嚟講,你可以預先喺 CI 環境設定好呢個 helper,並確保佢有權限存取到預先儲存好嘅秘密,咁樣自動化流程就可以無縫登入。
舉個實際例子,假設你公司用緊一個私有嘅鏡像倉庫,可能係自己搭建嘅 Docker Registry,或者係雲端儲存庫如 AWS ECR、Google Container Registry。喺你嘅 Jenkins 或 GitLab CI 腳本入面,你可以喺執行任務嘅最初階段,運行一個步驟來設定登入。如果你用緊 ECR,你可能會用 AWS CLI 嘅 get-login-password 命令攞到一個臨時 token,然後用管道傳去 docker login。呢個過程本身就可以寫成一個 script 檔案,成為你自動化流程嘅一部分。記住,喺 2026 年,安全標準更高,直接將長期有效嘅密碼或 Access Key 寫死喺腳本檔案入面係極度不建議嘅,一定要用短期有效嘅安全令牌(security tokens)或者利用身份聯盟嘅方式。
另外,Docker Desktop 嘅圖形界面其實都幫你管理咗唔少憑證嘅麻煩嘢,但係喺伺服器命令行操作嘅世界,CLI commands 先係王道。你要熟習 docker login、docker logout 呢啲基本指令參數,亦要了解點樣透過 docker search 去公有或私有倉庫搵映像檔,雖然搜尋功能喺 Docker Hub 公開 registry 比較常用。講到私有資料庫,無論係用 Nexus Repository、JFrog Artifactory 定係簡單用 nginx 做反向代理保護嘅 registry,自動化登入嘅原理都係相通嘅:就係讓 Docker 客戶端能夠喺無需人機互動嘅情況下,獲取到有效的身份驗證。
最後都要提一提風險管理。自動化登入雖然方便,但係將憑證檔案放喺邊度、點樣加密、點樣輪換,都係需要仔細規劃。如果個憑證檔案洩露咗,攻擊者就可以用你嘅身份任意上傳下載映像檔,甚至推送惡意鏡像。所以,定期更新令牌、限制帳號權限(例如只畀推送特定倉庫嘅權限,而唔係整個帳號嘅 admin 權)、同埋監控 Docker Registry 嘅存取日誌,都係 2026 年運維工作中不可或缺嘅安全實踐。總而言之,用憑證檔案自動化登入係提升容器技術工作流效率嘅關鍵一步,但一定要以安全為前提,妥善設定你嘅 credential store 同 authentication 流程。
About鏡像倉庫Professional illustrations
登出(Logout)正確步驟
好啦,講完點樣用 docker login 登入去 Docker Hub 或者其他 Docker Registry,跟住落嚟好自然就要講吓點樣「走人」啦。冇錯,我哋講緊嘅就係 登出(Logout)。你千祈唔好以為登出係㩒個叉掣閂咗個 Docker Desktop 或者閂個 Terminal 就算數咁簡單。喺 容器技術 嘅世界,尤其係涉及 身份驗證(authentication) 同 credential management,登出係一個明確嘅 CLI commands 操作,目的就係要將你嘅登入憑證從本地系統安全噉移除,避免你個 account 被人唔小心用到,或者喺公用電腦上留低手尾。呢個步驟對於 運維 同日常 鏡像管理 嘅安全性嚟講,係好基本但又好重要嘅一環。
咁點樣先係 登出(Logout)嘅正確步驟 呢?好簡單,主要就係靠一條 命令行操作。你打開你嘅 Terminal 或者 Command Prompt,輸入以下指令:docker logout。就係咁直接。當你執行呢個指令,Docker 就會幫你將目前預設登入嘅 Docker 註冊表(通常就係 Docker Hub)嘅 authentication 資訊清除。如果你唔止登入咗一個 鏡像倉庫,例如你除咗 Docker Hub 之外,仲登入咗公司自己嘅私有 registry 或者第三方案 雲端儲存庫,你可以指定登出邊一個。指令格式係 docker logout [SERVER_ADDRESS]。舉個例,如果你登入過一個自己搭建嘅 registry,地址係 myregistry.example.com:5000,咁你要登出呢個特定倉庫,就要打 docker logout myregistry.example.com:5000。唔指定伺服器地址嘅話,預設就係登出 Docker Hub。
你可能會問,點解要特登登出?我部電腦自己用嘅啫。呢個觀念要改改啦。首先,你嘅登入憑證(通常係一個安全令牌或者你嘅 email address 同密碼嘅加密版本)會儲存喺你電腦嘅 credential store 裏面。如果你唔登出,下次任何有權限嘅人或者程式(包括一啲自動化腳本)都可以直接用你個身份去 上傳映像檔 或者拉取私有 映像檔資料庫 嘅內容,有安全風險。其次,如果你喺公司環境,或者用緊一部公用嘅開發機,登出就係一個良好習慣,確保你唔會同下一位使用者嘅 賬號註冊 資訊撞車或者引起混亂。尤其係當你需要切換唔同嘅 account 去做 鏡像推送 嘅時候,先登出舊賬號,再用 docker login 登入新賬號,個流程就最清晰不過。
講到實際操作,有幾個常見情況同細節要留意。第一,如果你用緊 Docker Desktop,佢本身有個圖形介面可以管理登入狀態,但係背後都係同 命令行登錄 嘅系統共用同一套憑證。所以,喺命令行做 logout,會同時影響到 Docker Desktop 嘅登入狀態,反之亦然。第二,登出指令成功之後,系統通常會顯示一條簡單訊息,例如「Removing login credentials for [伺服器地址]」或者就咁「Logout Succeeded」。你可以用 docker login 指令去測試,如果系統提示你輸入用戶名同密碼,就證明你已經成功登出咗。第三,如果你遇到登出唔到,或者憑證好似仲喺度嘅情況,可以手動去檢查你系統嘅憑證儲存位置。例如喺 Linux 系統,可以睇睇 ~/.docker/config.json 呢個檔案;喺 Windows,就可能要去「Credential Manager」裏面睇吓有冇 Docker 相關嘅登入項目。手動刪除呢啲項目,都等於強制登出。
最後,我想強調一點,登出 同 登錄登出 呢啲操作,雖然好似好細微,但其實係 容器技術 工作流裏面嘅一環。佢同你點樣 search 官方映像檔、點樣管理星級評等、點樣設定 指令參數 一樣,都係基礎功。養成隨手登出嘅習慣,特別係當你處理完一啲敏感嘅 私有資料庫 之後,可以大大減低憑證外洩嘅風險。記住,安全管理就係由呢啲小步驟開始累積嘅。希望呢個詳細嘅解釋,可以幫到各位香港嘅開發者同 運維 朋友,更清晰噉掌握 Docker 嘅日常操作。
AboutSignProfessional illustrations
多用戶環境登入管理
喺多用戶環境入面,管理好 Docker 嘅登入狀態同身份驗證,對於團隊協作同運維安全嚟講,真係重中之重。想像一下,你個團隊有成十幾人,個個都要用 Docker Desktop 或者命令行去 docker login,如果唔做好管理,好容易就會出現權限混亂,甚至唔小心將私有嘅 映像檔資料庫 嘅內容推送咗去公開嘅 Docker Hub,又或者用錯帳戶拉取咗商業版嘅鏡像,咁就大鑊啦。所以,無論你哋係用緊官方嘅 Docker 註冊表,定係自己搭建嘅私有 鏡像倉庫(例如用 nginx 做反向代理嘅 Docker Registry),建立一套清晰嘅登入管理流程都係必須嘅。
首先,要搞清楚 authentication(身份驗證)嘅基本機制。當你執行 docker login 呢個 CLI commands 時,Docker 會提示你輸入 email address 同密碼,又或者係更安全嘅 security tokens(例如個人存取令牌)。登入成功後,你嘅 credential(登入憑證)預設會儲存喺你電腦嘅一個加密檔案入面,呢個就係 credential store 嘅作用。但喺多用戶環境,例如一部共用嘅伺服器或者開發機,問題就嚟啦:點樣確保每個用戶都用自己嘅帳戶登入?點樣防止 A 用戶用咗 B 用戶嘅登入狀態去操作?一個好嘅習慣係,要求每個團隊成員都用自己嘅 Docker Hub 帳戶完成 Sign Up 同 Sign in,絕對唔好共用一個「團隊萬能帳戶」。咁樣做,鏡像管理 上嘅操作,例如邊個 上傳映像檔、邊個刪除咗標籤,都可以追溯返到具體嘅帳戶,對於審計同安全排查好有幫助。
對於私有嘅 鏡像倉庫,管理就更加需要細緻。好多公司會選擇自建 Registry,並且同公司內部嘅身份認證系統(例如 LDAP 或 OAuth)做整合。咁樣,開發者就可以用返公司嘅統一帳戶嚟做 docker login,唔使記多一套密碼。喺設定層面,你需要清楚配置個 Registry 嘅認證伺服器(authentication server),確保佢能夠正確識別唔同用戶嘅權限。例如,你可以設定某個項目組嘅成員只有權限拉取(pull)某幾個特定嘅 鏡像倉庫,而只有項目負責人先有權限推送(push)新版本。呢種基於角色嘅權限控制,可以有效防止誤操作。另外,定期執行 docker logout 喺共用環境亦都係一個好習慣,尤其係當你完成咗自己嘅工作之後,登出可以避免下一位使用者喺唔知情嘅情況下用咗你嘅身份去做操作。
講到 credential management(憑證管理),Docker Desktop 同 Docker 引擎本身提供咗幾種方式。除咗最基本嘅儲存喺作業系統嘅密鑰管理服務入面,對於更高安全要求嘅環境,可以考慮使用外置嘅憑證助手,例如 pass 或者 secretservice。喺團隊內部,可以制定一個指引,教導成員點樣安全地管理自己嘅登入憑證,特別係提醒佢哋唔好將含有憑證嘅配置文件(例如 ~/.docker/config.json)直接複製到其他機器或者分享畀人。如果團隊需要喺 CI/CD 流水線(例如 Jenkins 或 GitLab CI)入面自動化登入,就更加應該使用服務帳戶(Service Account)嘅 security tokens,而唔係個人帳戶嘅密碼,並且要確保呢啲令牌有適當嘅有效期同權限範圍。
最後,實戰分析一下常見場景。假設你個團隊同時需要接觸多個 映像檔資料庫:一個係公司內部嘅私有 Registry,一個係公開嘅 Docker Hub 用嚟拉取 官方映像檔,可能仲有一個第三方嘅雲服務商提供嘅 雲端儲存庫。喺呢種情況下,點樣方便咁切換登入狀態呢?關鍵在於理解 docker login 嘅 指令參數。你可以喺登入時指定唔同嘅 Registry 伺服器地址。例如,登入公司私有倉庫用 docker login private.registry.com,登入 Docker Hub 就用 docker login(默認地址)。Docker 會喺配置文件入面為唔同嘅 Registry 地址分別儲存憑證,以後做 鏡像推送 或拉取時,Docker 會自動匹配對應嘅登入信息。團隊可以將呢啲常用嘅 Registry 地址同使用規範整理成一份內部文件,甚至可以寫一啲簡單嘅 Shell 腳本輔助快速切換,咁樣就大大提升咗 命令行操作 嘅效率同準確性,減少咗因為登入錯倉庫而導致嘅失誤。總而言之,多用戶環境下嘅登入管理,核心就係將「人」、「帳戶」、「權限」同「操作」清晰綁定,並利用好 Docker 提供嘅工具同機制,咁先可以喺享受 容器技術 帶來嘅便利嘅同時,確保成個 鏡像倉庫 嘅秩序同安全。
AboutSignProfessional illustrations
CI/CD 管道自動登入設定
講到 CI/CD 管道自動登入設定,其實就係將「docker login」呢個手動動作,變成自動化流程嘅核心關鍵。喺 2026 年嘅今日,仲喺度手動逐部機、逐個環境打指令登入 Docker Registry 嘅話,就真係太 out 喇,而且極度冇效率兼容易出錯。所謂 CI/CD 管道,即係由你寫好 code、到 build 成 Docker 映像檔、再推上鏡像倉庫(例如 Docker Hub 或者自己公司嘅私有 Docker Registry)呢一連串自動化步驟。要順利完成「鏡像推送」,第一步就係要系統自動通過身份驗證,呢個就係自動登入設定要做嘅功夫。
點樣做呢?最直接嘅方法就係利用 Docker CLI commands 入面嘅「docker login」指令,但唔係人手打,而係叫 CI/CD 工具(例如 Jenkins、GitLab CI、GitHub Actions 或者 Azure DevOps)幫你執行。重點在於,你唔可以將自己嘅 username 同 password 明文寫死喺腳本度,咁樣做 security risk 好大。所以,2026 年嘅標準做法係用 security tokens 或者專用賬號嘅存取令牌(Access Token)來代替直接使用密碼。例如,你可以去 Docker Hub 嘅賬號設定度,生成一個專門用於 CI/CD 嘅 Access Token,呢個 token 可以有特定權限,譬如只准讀寫某幾個映像檔資料庫,咁樣就安全好多啦。
具體點樣將 authentication 資訊塞入 CI/CD 管道呢?通常有幾種模式。第一種係利用 CI/CD 系統本身提供嘅 credential management 功能。好似 Jenkins 有 Credentials Binding 插件,你可以事先將 Docker Hub 嘅登入資料(username 同 token)儲存為一個「Secret」喺 Jenkins 入面。然後喺 Pipeline script 度,用「withCredentials」呢類指令將啲 secret 拎出來,設定到環境變數,再執行「docker login -u $USERNAME -p $PASSWORD」呢類命令行登錄。咁樣啲敏感資料就唔會暴露喺 log 或者代碼入面。
另一種常見做法,尤其係喺雲端原生環境,就係利用容器編排平台(例如 Kubernetes)嘅 Secret 資源,或者雲端供應商(如 AWS、GCP、Azure)提供嘅安全管理服務。你可以先將 Docker Registry 嘅認證資料(通常係一個 config.json 檔案)整成一個 Kubernetes Secret。然後喺 CI/CD pipeline 入面,當要 build 同推送映像檔嗰陣,就指示個 pipeline 去用呢個 Secret 來完成登入。呢種方法對於要推送到私有資料庫嘅情況特別有用,因為可以統一管理多個環境嘅登入憑證。
講到實戰例子,假設你公司用緊 GitLab CI。你可以喺 GitLab 專案嘅 Settings > CI/CD > Variables 度,設定兩個環境變數:一個叫「DOCKERHUB_USER」,另一個叫「DOCKERHUB_TOKEN」(就係頭先講嘅 Access Token)。然後,喺你嘅 .gitlab-ci.yml 檔案入面,就可以喺 job script 入面加入登入步驟。大概係咁樣嘅邏輯:首先檢查係咪有呢啲變數,然後用「echo $DOCKERHUB_TOKEN | docker login -u $DOCKERHUB_USER --password-stdin」呢個命令來登入。用「--password-stdin」參數係 2026 年嘅最佳實踐,可以避免密碼出現喺命令行歷史度,更加安全。登入成功之後,跟住落來嘅「docker build」同「docker push」指令就可以順利將映像檔推上 Docker Hub 或者你指定嘅鏡像倉庫。
對於進階嘅運維團隊,可能仲會考慮到多 Registry 嘅情況。例如,除咗官方嘅 Docker Hub,公司內部可能仲有一個用 nginx 反向代理搭建嘅私有 Docker Registry,或者用雲端服務商提供嘅雲端儲存庫(如 AWS ECR、Google Container Registry)。咁 CI/CD 管道就要識得按情況登入唔同嘅 registry。通常做法係喺登入命令度指明 registry 嘅地址,例如「docker login myprivate-registry.example.com」。同樣地,登入憑證就要根據唔同 registry 來分開管理,唔好撈亂。
最後要提一提安全同維護要點。自動登入雖然方便,但絕對唔可以鬆懈。第一,定期輪換(Rotate)你嘅 Access Token 或者 security tokens,唔好一個 token 用幾年。第二,嚴格限制 CI/CD 所用賬號嘅權限,遵循最小權限原則。如果只係需要推送映像檔去特定倉庫,就唔好俾佢全賬號存取權。第三,密切監控登入活動,尤其係 CI/CD 系統嘅 log,睇下有冇異常嘅登入嘗試或者失敗記錄。喺 2026 年,容器技術已經係基礎設施嘅標準,將身份驗證呢啲步驟徹底自動化同安全管理好,先可以令你嘅 CI/CD 管道既流暢又穩陣,真正提升開發同部署嘅效率。
AboutauthenticationProfessional illustrations
檢查當前登入狀態方法
好啦,而家我哋已經識點用 docker login 登入去 Docker Hub 或者其他 私有鏡像倉庫 啦,咁點知自己而家係咪仲登入緊、或者登入咗去邊個 account 呢?呢個就係「檢查當前登入狀態」嘅課題,對於 身份驗證 同 鏡像管理 嚟講好重要,尤其係當你要 推送映像檔 去唔同嘅 registry 嗰陣,唔想撈亂咗 credential 就好有用。
首先,最直接嘅方法就係用 Docker CLI commands 嚟查。你可以打開你嘅終端機,打「docker info」呢個指令,佢會顯示一大堆關於你 Docker 環境嘅資訊。喺入面,你可以留意吓「Registry」或者「Username」呢啲欄位,有時會顯示你當前默認登入嘅 Docker 註冊表 同用戶名。不過呢個方法未必次次都直接顯示,所以更常用嘅係檢查 Docker 嘅 credential store(憑證儲存區)。Docker 會將你登入嘅 authentication 資料(例如 email address 或者 security tokens)安全噉儲存喺你部電腦度,唔同作業系統嘅位置都唔同,例如 macOS 會用 Keychain,Linux 就用 pass 或者 file 之類。你可以直接去呢啲系統嘅 credential management 工具度睇吓有冇 Docker Hub 或者相關 registry 嘅記錄,就知道有冇登入過啦。
另一個超簡單直接嘅 命令行操作,就係試吓用「docker search」去搜一啲官方或者私有嘅 映像檔資料庫。如果你冇登入,當你想搜一啲私有嘅 鏡像倉庫 時,通常會彈返個 authentication 錯誤出嚟話你知權限不足。相反,如果搜得到,就表示你嘅登入狀態仲有效。當然,呢個方法比較間接,唔係專門用嚟檢查狀態。講到專門嘅指令,其實 Docker 冇一個直接叫「docker status」嘅嘢,但你可以靠「docker logout」嚟做反向測試——如果你打「docker logout」之後,系統話你「Not logged in」,咁就即係之前係登入緊啦!不過咁樣做會真係登出咗,所以唔係最好嘅檢查方法。
對於進階嘅 運維 人員嚟講,特別係做緊 container orchestration 或者要管理多個 雲端儲存庫 嘅時候,清楚知道當前 CLI 連緊邊個 registry 係必須嘅。你可以檢查 Docker 嘅設定檔,通常喺「~/.docker/config.json」呢個檔案入面。用文字編輯器打開佢,你就會睇到一個「auths」嘅段落,裏面會列出所有你曾經登入過嘅 鏡像倉庫 地址(例如「https://index.docker.io/v1/」就代表 Docker Hub)同對應嘅加密咗嘅 authentication token。如果呢個「auths」入面有記錄,就表示你仲保持住登入狀態。呢個方法係最準確,可以睇到你對唔同 registry(例如公司自己起嘅、用 nginx 做反向代理嘅私有倉庫,又或者係第三方程式庫)嘅登入狀況。
另外,如果你係用 Docker Desktop 嘅圖形界面,檢查仲加簡單。打開 Docker Desktop,通常喺設定(Settings)或者帳戶(Account)嘅部分,會直接顯示你當前登入嘅 Docker Hub 帳戶名同 email address。呢個對於唔太熟 命令行登錄 嘅開發者嚟講就非常直觀,一眼就知自己用緊邊個 account 嚟做 鏡像推送 或者拉取。記住,無論你用緊邊種方法,定期檢查同管理你嘅登入狀態都係 容器技術 安全實踐嘅一環,可以避免意外將公司私有 映像檔 推送到公開 Docker Hub 呢類尷尬同安全風險。
最後提多句,有時你可能會喺網上搵到一啲舊文章或者 CSDN、菜鳥教程 嘅參考,佢哋可能會提到一啲舊版本 Docker 嘅檢查方法。但係而家已經係2026年,Docker 嘅 credential store 同安全機制都有更新,所以最好都係以官方最新文件為準。總括嚟講,掌握檢查 登錄登出 狀態嘅方法,就好似清楚自己銀行戶口有幾多錢一樣,係有效管理你所有 鏡像倉庫(無論係公開定私有)嘅基本功,令你嘅開發同部署流程更加順暢同安全。
AboutcredentialProfessional illustrations
第三方容器倉庫登入實例
好啦,講完官方嘅 Docker Hub,而家我哋嚟睇下第三方容器倉庫登入實例。呢個係實際運維同開發入面好常見嘅情景,因為好多公司唔會將自己嘅商業機密或者內部應用嘅映像檔擺去公共嘅 Docker Hub,而係會選擇自建或者用其他雲服務商提供嘅私有資料庫。呢啲就係我哋講嘅第三方容器倉庫,或者叫 Docker Registry。你可能會用 AWS ECR、Google Container Registry (GCR)、Azure Container Registry (ACR),又或者係公司自己喺內網搭建嘅 Harbor、Quay.io 呢類鏡像倉庫。咁點樣用 docker login 去登入呢啲第三方倉庫呢?個原理同登入 Docker Hub 差唔多,但係個地址同身份驗證方法就可能有好大分別。
首先,你一定要知道個鏡像倉庫嘅完整地址。同默認去 Docker Hub 唔同,你登入第三方倉庫嘅時候,必須喺 docker login 指令後面指明個 registry 嘅網址。例如,如果你公司用緊一個自己搭建嘅 Harbor,個地址係 registry.mycompany.com,咁你嘅命令行登錄指令就會係:docker login registry.mycompany.com。打咗呢個指令之後,命令行會提示你輸入使用者名稱同密碼,呢啲憑證通常就係你喺公司內部嘅帳號,又或者係系統生成嘅 security tokens。成功登入之後,Docker 就會將你嘅身份驗證資訊安全噉儲存喺你部機嘅 credential store 裏面,等你之後 push 或者 pull 私有鏡像嘅時候就唔使次次再打密碼,方便好多。
我舉個更具體嘅例子,例如而家好流行用阿里雲或者騰訊雲嘅鏡像倉庫服務。假設你用緊阿里雲容器鏡像服務,佢會畀你一個專用嘅 registry 域名,好似 registry.cn-hongkong.aliyuncs.com 咁。你要做嘅第一步,通常係去佢哋個控制台生成一組訪問憑證,可能係固定密碼,亦都可能係臨時嘅 access token。然後,你返去自己部裝咗 Docker Desktop 或者 Docker Engine 嘅電腦,打開終端機,輸入 docker login registry.cn-hongkong.aliyuncs.com,跟住佢問你 username 同 password 嘅時候,你就輸入返阿里雲提供畀你嘅資料。成功登入之後,你就可以用 docker tag 指令將你本地 build 好嘅鏡像,改名做符合佢哋倉庫路徑嘅格式(例如 registry.cn-hongkong.aliyuncs.com/my-namespace/my-app:latest),再用 docker push 指令將個映像檔上傳去阿里雲嘅雲端儲存庫裏面。呢個過程就完美體現咗 docker login 點樣同第三方服務協作,完成鏡像管理同鏡像推送嘅工作流。
另外有一種情況係,呢啲第三方倉庫可能要求更安全嘅認證方式,例如用 OAuth2 或者透過命令行工具事先取得一個短時間有效嘅認證令牌。好似 AWS ECR 咁,佢就唔係用傳統嘅用戶名密碼。你要先用 AWS CLI 運行一個指令(例如 aws ecr get-login-password)去攞到一個暫時性嘅密碼,然後用管道(pipe)嘅方式將呢個密碼傳去 docker login 指令度。雖然步驟多咗,但係安全性就大大提高咗,因為唔使將長期有效嘅密碼硬編碼喺任何腳本入面。呢啲進階嘅 credential management 技巧,對於確保你嘅容器技術部署管道安全係好重要嘅。
最後都要提一提,有時我哋喺網上搵資料,可能會見到 CSDN 或者菜鳥教程呢類技術網站,會分享一啲關於登入特定鏡像倉庫嘅心得或者踩過嘅坑。參考嘅時候要記住,命令行操作嘅細節可能會隨住時間而更新,特別係而家已經係2026年,好多服務嘅介面同安全政策都可能已經改咗。所以,最穩陣嘅方法永遠係去返該個第三方鏡像倉庫嘅官方最新文檔,睇清楚佢哋建議嘅 authentication 方法係咩。總而言之,掌握 docker login 點樣用喺唔同嘅 Docker 註冊表,係你有效運用容器編排同實現自動化部署嘅基礎技能,搞掂咗登入呢一步,之後嘅 pull、push、同管理映像檔資料庫先會順風順水。
AboutdockerProfessional illustrations
登入後權限同映像操作
登入 Docker Hub 或者其他 Docker 註冊表之後,你嘅權限就即刻同映像檔操作掛鉤,呢個係容器技術運維嘅核心之一。簡單嚟講,你個身份驗證(authentication)成功,Docker 系統就會根據你個賬戶權限,決定你可以對鏡像倉庫做啲乜。例如,你用 Docker Desktop 或者直接喺命令行登錄(CLI commands),輸入完 email address 同安全令牌(security tokens),你嘅 credential store 就會記住呢組憑證。之後,你唔單止可以搜尋(search)官方映像檔同私有資料庫嘅內容,更重要係你可以進行鏡像管理,比如拉取私有映像、推送自己 build 嘅鏡像上雲端儲存庫,甚至管理星級評等。
具體權限點樣劃分呢?首先,如果你只係用免費賬戶登入 Docker Hub,你可以擁有自己命名空間下嘅公開鏡像倉庫,可以隨意推送同拉取。但係如果你想操作機構或者團隊嘅私有映像檔資料庫,你就需要管理員賦予你相應權限。例如,你公司用 Docker Registry 自建咗一個私有 registry,裏面放咗公司內部用嘅 nginx 定制鏡像。你透過 docker login 命令登入呢個私有 registry 之後,你就可以根據你賬戶嘅角色(可能係只讀、讀寫或者管理員),去拉取或者上傳映像檔。呢個過程牽涉到 credential management,Docker 會幫你將登入資訊安全噉儲存起嚟,等下次操作唔使重複登入。
舉個實際例子,假設你喺團隊入面負責開發,你需要每日更新一個測試用嘅鏡像。你喺命令行操作,先用 docker login 登入公司私有 registry,然後你就可以用 docker push 將新 build 出嚟嘅鏡像上傳到指定倉庫。相反,如果你冇登入,或者嘗試推送去一個你冇權限嘅倉庫(例如其他團隊嘅私有庫),系統就會彈出 authentication 錯誤,阻止你操作。呢個權限機制保障咗鏡像倉庫嘅安全性,避免未經授權嘅修改或者洩露。
另外,登入狀態亦影響你同 Docker Hub 上其他公共資源嘅互動。例如,你登入後,你可以對公共映像檔標記星級評等,或者喺 CSDN、菜鳥教程等社區提到嘅特定映像檔頁面留下評論。雖然呢啲操作唔似推送鏡像咁核心,但都係賬戶權限嘅一部分。同時,你亦可以透過命令行登錄後,搜尋更多詳細嘅映像檔資訊,包括版本歷史、安全掃描報告等,呢啲資訊對於運維同安全審查好有價值。
要注意嘅係,登入後權限並非永久不變。你可以透過 docker logout 命令登出當前 registry,登出後你嘅操作權限就會回復到未驗證狀態。例如,你登出 Docker Hub 後,就無法再推送映像去你個人倉庫,直至你重新 Sign in。同樣,如果你切換唔同嘅 registry(例如從 Docker Hub 轉到另一個公司自建嘅 registry),你需要重新登入,權限亦會跟隨你登入嘅目標 registry 而變化。呢種靈活性對於需要同時處理多個鏡像倉庫嘅開發者同運維團隊尤其重要。
最後,關於權限管理嘅深度建議。如果你係團隊管理者,你應該善用 Docker Hub 或者私有 Docker Registry 提供嘅細粒度權限控制。例如,你可以設定某個團隊成員只有 pull 權限,而冇 push 權限,防止意外覆蓋重要鏡像。又或者,你可以為特定項目創建獨立嘅鏡像倉庫,只授予相關開發者訪問權。呢啲設定通常可以透過網頁界面或者 API 完成,同身份驗證系統緊密集成。總括嚟講,登入唔只係一個簡單嘅 Sign Up 同 Sign in 步驟,而係開啟咗一整套映像檔操作權限嘅大門,直接影響你喺容器編排(container orchestration)同持續交付流程中嘅效率同安全。