日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

在Dockerfile中使用構建打包鏡像并運行

通過使用多階段構建應用以及結合阿里云容器鏡像服務(ACR)的鏡像構建服務,可以使Java應用具有構建安全、構建速度快、鏡像文件體積小等優點。

前提條件

背景信息

鏡像構建的通用問題

鏡像構建服務使用Dockerfile來幫助用戶構建最終鏡像,但在具體實踐中,存在一些問題:

  • Dockerfile編寫有門檻

    開發者(尤其是Java)習慣了語言框架的編譯便利性,不知道如何使用Dockerfile構建應用鏡像。

  • 鏡像容易臃腫

    構建鏡像時,開發者會將項目的編譯、測試、打包構建流程編寫在一個Dockerfile中。每條Dockerfile指令都會為鏡像添加一個新的鏡像層,從而導致鏡像層次深,鏡像文件體積特別大。

  • 存在源碼泄露風險

    打包鏡像時,源代碼容易被打包到鏡像中,從而產生源代碼泄漏的風險。

多階段構建優勢

針對Java這類的編譯型語言,使用Dockerfile多階段構建,具有以下優勢:

  • 保證構建鏡像的安全性

    當您使用Dockerfile多階段構建鏡像時,需要在第一階段選擇合適的編譯時基礎鏡像,進行代碼拷貝、項目依賴下載、編譯、測試、打包流程。在第二階段選擇合適的運行時基礎鏡像,拷貝基礎階段生成的運行時依賴文件。最終構建的鏡像將不包含任何源代碼信息。

  • 優化鏡像的層數和體積

    構建的鏡像僅包含基礎鏡像和編譯制品,鏡像層數少,鏡像文件體積小。

  • 提升構建速度

    使用構建工具(Docker、Buildkit等),可以并發執行多個構建流程,縮短構建耗時。

步驟一:創建Dockerfile

本文拷貝并托管位于Github上的一個簡單的Dockerfile,帶您來體驗整個流程。請確保您的倉庫中拷貝該Dockerfile成功。

步驟二:綁定源代碼倉庫

在容器鏡像服務控制臺,綁定您托管的代碼倉庫,以下內容以GitHub為例。

  1. 登錄容器鏡像服務控制臺。

  2. 在頂部菜單欄,選擇所需地域。

  3. 實例列表頁面單擊個人版實例。

  4. 在個人版實例管理頁面左側導航欄中選擇倉庫管理 > 代碼源。

  5. 在GitHub對應的操作列,單擊綁定賬號。在彈出的對話框中單擊點擊前往源代碼倉庫登錄,跳轉到GitHub。

  6. 在授權界面,單擊Authorize AliyunDeveloper。綁定成功后,會彈出您已成功綁定GitHub賬號的提示信息。返回至代碼源界面,GitHub欄中顯示已綁定,表示綁定成功。image

步驟三:新建鏡像倉庫

  1. 登錄容器鏡像服務控制臺。

  2. 在頂部菜單欄,選擇所需地域。

  3. 實例列表頁面單擊個人版實例。

  4. 在個人版實例管理頁面左側導航欄中選擇倉庫管理 > 鏡像倉庫,然后單擊創建鏡像倉庫

  5. 設置鏡像倉庫信息。

    配置項

    描述

    示例

    地域

    鏡像倉庫所在區域。

    華東1(杭州)

    命名空間

    倉庫所屬命名空間。一個鏡像倉庫必須且僅屬于一個命名空間。一個命名空間下可以包含多個鏡像倉庫。

    test23432

    倉庫名稱

    請輸入倉庫名稱。

    test

    倉庫類型

    倉庫類型分為公開私有。無論公開還是私有類型倉庫,推送鏡像都需要先進行登錄。公開倉庫所有人均可使用,為了避免您的數據受到損失,建議您使用私有倉庫。

    • 公開:拉取鏡像時可以免登錄,直接通過網絡拉取。

    • 私有:必須要通過Docker客戶端進行登錄,才能拉取鏡像。

    私有

    摘要

    簡要描述信息。

    -

    描述信息

    完整描述信息,支持Markdown格式。

    使用創建Dockerfile中的Dockerfile,結合ACR的鏡像構建服務,進行構建打包以及運行鏡像。

  6. 單擊下一步,設置代碼源。

    參數

    描述

    代碼源

    將代碼源設為GitHub,選擇綁定源代碼倉庫中綁定的源代碼倉庫。

    構建設置

    本示例使用代碼變更時自動構建鏡像海外機器構建。

    • 代碼變更時自動構建鏡像:當分支有代碼提交后會自動觸發構建規則。

    • 海外機器構建:構建時會在海外機房構建,構建成功后推送到指定地域。

    • 不使用緩存:每次構建時會強制重新拉取基礎依賴鏡像,可能會增加構建時間。

  7. 單擊創建鏡像倉庫。

    創建完成后,會跳轉至鏡像倉庫詳情頁面,您可以在倉庫詳情頁面查看倉庫的基本信息。

  8. 在左側導航欄,單擊倉庫名稱左側的23030201圖標。在鏡像倉庫頁面,您可以查看您剛才創建的鏡像倉庫,倉庫狀態顯示正常,即表示倉庫創建成功。

步驟四:執行構建

  1. 在左側導航欄中選擇倉庫管理 > 鏡像倉庫,單擊倉庫名稱或目標倉庫操作列的管理,進入倉庫詳情頁面。

  2. 單擊左側導航欄中的構建,在構建規則設置區域的單擊添加規則。

  3. 設置構建規則。

    配置項

    描述

    示例

    類型

    定義了推送代碼到托管倉庫,觸發構建規則的事件。目前有Branch和Tag兩種類型的推送。

    Branch

    Branch/Tag

    設置構建的代碼分支。

    master

    構建上下文目錄

    設置Dockerfile文件所在的目錄。這里的目錄指的是相對目錄,以代碼分支的根目錄為父目錄。本教程中Dockerfile完整路徑是/Dockerfile,此處填寫/。

    /

    Dockerfile文件名

    設置Dockerfile文件名,默認為Dockerfile。例如:Dockerfile完整路徑是/Dockerfile,此處填寫Dockerfile。

    Dockerfile

    鏡像版本

    設置鏡像版本。

    V1.0.0

  4. 單擊確認,返回至構建頁面。

  5. 構建規則設置區域中,找到創建的規則,單擊目標規則對應操作列的立即構建

    構建日志區域中找到構建記錄,當構建狀態顯示成功,表示構建成功。

步驟五:在ECS中安裝Docker

  1. 登錄ECS管理控制臺

  2. 在左側導航欄,選擇實例與鏡像>實例。

  3. 實例列表頁面,找到需要連接的實例,單擊該實例對應操作列下的遠程連接。

  4. 在彈出的連接與命令對話框中,單擊通過Workbench遠程連接對應的立即登錄

  5. 在彈出的登錄實例對話框中,輸入信息。一般情況下按精簡選項輸入信息即可,如下表所示。單擊確定。

    配置項

    說明

    實例

    自動填充當前實例的信息。

    網絡連接

    本文選擇專有網絡。

    • 專有網絡實例支持選擇公網IP或私網IP連接。

    • 經典網絡實例支持選擇公網IP或內網IP連接。

    認證方式

    選擇認證方式,本文選擇密碼認證。支持的認證方式如下:

    • 密碼認證:輸入用戶名(例如root或ecs-user),需要繼續輸入登錄密碼。

    • 證書認證:輸入用戶名(例如root或ecs-user),需要繼續輸入或上傳證書。如果證書已加密,還需要輸入密鑰口令。

    • 憑據認證:選擇已定義好的憑據或者新增憑據。

      憑據用于存儲實例的用戶名、密碼和密鑰等信息,您無需每次登錄都輸入用戶名、密碼,直接選擇憑據即可安全登錄實例。

  6. 執行如下命令,在ECS中安裝Docker。

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

步驟六:在Docker中配置鏡像加速器

由于當前運營商網絡問題,可能會導致您拉取Docker Hub鏡像變慢。建議您手動拉取鏡像到本地節點,然后重啟Pod。執行如下命令,在Docker中配置鏡像加速器。

  1. 登錄容器鏡像服務控制臺。在頂部菜單欄,選擇創建的容器實例所在地域。

  2. 在左側導航欄,選擇鏡像工具>鏡像加速器。在加速器區域,復制加速器地址。

  3. 執行如下命令,在Docker中配置鏡像加速器。請將https://gwsg6nw9.mirror.aliyuncs.com替換為您在上一步驟中復制的加速器地址。

    mkdir -p /etc/docker #創建配置文件目錄。
    tee /etc/docker/daemon.json <<-'EOF' #寫入加速配置。
    {
      "registry-mirrors": ["https://gwsg6nw9.mirror.aliyuncs.com"]
    }
    EOF
    systemctl daemon-reload #重新加載配置文件。
    systemctl restart docker #重啟Docker服務。

執行結果

查看構建的鏡像

在個人版實例管理頁面左側導航欄中選擇倉庫管理>鏡像倉庫,單擊倉庫名稱或目標倉庫操作列的管理,單擊左側導航欄的鏡像版本,查看構建的鏡像。

在Docker中運行鏡像

  1. 在Docker執行如下命令,登錄阿里云Docker Registry。請將命令中的acr_e2******@test.aliyunid.com替換為您的阿里云賬號全名,密碼為您在準備環境和資源中設置的密碼;cn-hangzhou替換為您個人版實例所在的地域。

    docker login --username=acr_e2******@test.aliyunid.com registry.cn-hangzhou.aliyuncs.com
  2. 執行如下命令,拉取鏡像。請將命令中的cn-hangzhou替換為您個人版實例所在的地域;test23432替換為您實際使用的命名空間;test:V1.0.0替換為實際使用的倉庫名稱以及鏡像版本。

    docker pull registry.cn-hangzhou.aliyuncs.com/test23432/test:V1.0.0
  3. 執行如下命令,查看Docker鏡像。

    docker images
  4. 執行如下命令,運行鏡像。請將命令中的cn-hangzhou替換為您個人版實例所在的地域;test23432替換為您實際使用的命名空間;test:V1.0.0替換為實際使用的倉庫名稱以及鏡像版本。

    docker run -ti registry.cn-hangzhou.aliyuncs.com/test23432/test:V1.0.0
    Hello World!