在昨天我們談完Azure小白如何使用Azure Container Instances執行Docker Container
,今天我們來介紹Azure Container Registry及Azure Container Registry異地複寫
Azure Container Registry是managed Docker registry服務,以開放原始碼
的Docker Registry 2.0為基礎。,Container Registry是在 Azure中裝載的
Private服務,可讓您建置、儲存和管理所有容器部署類型的映像。
我們可以在 Container Registry中使用 Docker CLI或Azure CLI來Push及
Puall Container Image,Azure Portal整合可讓您以視覺化方式檢查
Container Images in Container Registry,在分散式環境中Container
Registry異地複寫功能可用來將container images散發至多個Azure資料中心,
以進行當地散發,除了儲存container images,Azure Container Registry
Tasks 也可以在 Azure中建置container images,Tasks使用標準 Dockerfile
在Azure Container Registry中建立及儲存container image,而不需要本機
Docker工具,透過 Azure Container Registry Tasks,DevOps程序和工具可以
用來進行隨需建置,也可以用來將container image建完全自動化。
使用 az acr create 命令來建立 Azure Container Registry
az acr create --resource-group learn-deploy-acr-rg --name $ACR_NAME --sku Premium
若你的公司使用container images來管理計compute workloads,你使用本機
Docker工具來建置container images,你現在可以使用 Azure Container
Registry Tasks 來建置這些containers,Container Registry Tasks也允許
DevOps process與source code commit的自動建置整合。
使用標準Dockerfile來提供建置指示,Azure Container Registry Tasks可讓
你重複使用目前在環境中的任何Dockerfile,包括多階段組建,以下為Docker
File內容範例:
FROM node:9-alpine
ADD https://raw.githubusercontent.com/Azure-Samples/acr-build-helloworld-node/master/package.json /
ADD https://raw.githubusercontent.com/Azure-Samples/acr-build-helloworld-node/master/server.js /
RUN npm install
EXPOSE 80
CMD ["node", "server.js"]
我們可以使用多種container management platforms(Azure Container
Instances, Azure Kubernetes Service,Docker for Windows or Mac)
從Azure Container Registry 提取Container Image。
Azure Container Registry不支援未經驗證的存取,並且需要所有作業都經過
驗證。 登錄支援兩種類型的身分識別:
-Azure Active Directory 身分識別:包括使用者和服務主體。 使用 Azure
Active Directory身分識別存取登錄是以角色為基礎,身分識別可以指派三個
角色其中之一:讀者(僅限提取存取)、參與者(推送和提取存取權),或擁有者
(提取、推送並指派角色給其他使用者)。
-每個登錄中包含管理帳戶:預設會停用管理帳戶。
以下為使用Azure CLI建立container指令,必需輸入registry-username及
registry-password
az container create \
--resource-group learn-deploy-acr-rg \
--name acr-tasks \
--image $ACR_NAME.azurecr.io/helloacrtasks:v1 \
--registry-login-server $ACR_NAME.azurecr.io \
--ip-address Public \
--location <location> \
--registry-username [username] \
--registry-password [password]
若你的公司有部署到數個區域的計算工作負載,藉此確保有本機項目來為分散的
客戶群提供服務,你的目的是在每個有Image執行的區域放置container
registry,這項策略可實作網路近距作業,提供快速、可靠的Image Layer傳輸。
異地複寫可讓 Azure 容器登錄作為單一登錄,使用多重主要區域登錄來服務數個
區域。
geo-replicated registry(異地複寫登錄)能提供下列優點:
-可跨多個區域使用單一registry/image/tag名稱
-從區域部署進行網路鄰近registry存取
**-沒有其他輸出費用,因為Images是取自與container host相同區域中的local,
replicated registry**
-跨多個區域管理單一registry
az acr replication create --registry $ACR_NAME --location japaneast
手把手部署Azure Container Registry步驟:
手把手使用Azure Container Registry Task建置container image步驟:
手把手使用Azure Container Registry部署image步驟:
手把手將container image複寫至不同的Azure區域步驟:
Day26教學講義:
https://docs.microsoft.com/zh-tw/learn/modules/build-and-store-container-images/