基于ACR的镜像仓库管理

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 通过实验了解Dockerfile构建镜像的基本方法,熟悉阿里云ACR服务,掌握基于ACR推送、拉取镜像的基本操作。

背景知识

阿里云容器镜像服务ACR(Alibaba Cloud Container Registry)是面向容器镜像、Helm Chart等符合OCI标准的云原生制品安全托管及高效分发平台。ACR企业版支持全球同步加速、大规模和大镜像分发加速、多代码源构建加速等全链路加速能力,与容器服务ACK无缝集成,帮助企业降低交付复杂度,打造云原生应用一站式解决方案。

详细内容可见我前面的文章:https://developer.aliyun.com/article/1349152?spm=a2c6h.13148508.setting.17.5a9e4f0eeWmEtY.

本文主要介绍ACR作为镜像仓库管理的相关知识。


基于ACR的镜像仓库管理

本实验要求ECS云服务器已安装了Docker环境,具体操作请参考我前面的文章:https://developer.aliyun.com/article/1346773?spm=a2c6h.13148508.setting.21.5a9e4f0eeWmEtY

此处,我们从默认docker安装好开始,可以执行docker -v查看是否安装成功。

docker -v

image.png

接下来开始构建Dockerfile文件。Dockerfile 是一个用来构建镜像的文本文件,其中包含了构建镜像所需的指令和说明。

创建工作目录并进入该目录

mkdir -p /tmp/demo 
cd /tmp/demo

创建代码文件main.go

vi /tmp/demo/main.go

编辑如下内容到main.go文件,代码用来在容器环境中监听HTTP服务,输出指定的字符串。

package main

import (
        "fmt"
        "net/http"
)

func main() {
   
   
        http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
   
   
                fmt.Fprintf(w, "Hello! This is a Dockerfile Test\n")
        })

        fmt.Println("start to serve...")
        http.ListenAndServe(":80", nil)
}

完成后点击“ECS”键,然后输入:wq保存退出文档

创建Dockerfile文件

vi /tmp/demo/Dockerfile

编辑如下内容到Dockerfile文件。该Dockerfile文件包含了构建运行main.go代码所需环境镜像的指令。

FROM golang:1.12-alpine

# change current working dir
WORKDIR /go/src/app

# copy main.go into /go/src/app
COPY . .

# go build and install the app
RUN go install -v ./...

# run the app by default
CMD ["app"]

完成后点击“ECS”键,然后输入:wq保存退出文档

运行以下命令根据Dockerfile 构建一个镜像

docker build . -t demo:v1

其中:

. : 表示指定当前路径作为构建上下文,即Dockerfile所在的本地路径。

-t demo: v1指定镜像名称和标签。

image.png

查看镜像

docker images

image.png

基于demo:v1镜像运行一个容器。

docker run -d -p 8000:80 demo:v1

其中:

参数-d:设置容器运行模式为后台运行。

参数-p 8000:80 :将容器内部使用的网络端口80映射到主机8000端口。

image.png

查看容器列表

docker ps

image.png

使用curl工具访问容器,输出字符串。

curl localhost:8000

image.png

停止并删除容器。本示例容器的名字为dreamy_fermat:

docker stop dreamy_fermat
docker rm dreamy_fermat

image.png

接下来创建阿里云镜像仓库。

使用主账号登录阿里云,选择“控制台”,选择“产品与服务”-选择“容器镜像服务”。链接如下:https://www.aliyun.com/product/acr?spm=5176.28055625.J_4VYgf18xNlTAyFFbOuOQe.101.3ddd154aj6V5yC

单击“前往开通”。

image.png

单击“设置Registry登录密码” 。

image.png

设置阿里云Docker Registry登录密码,然后单击 “确定”。

image.png

在容器镜像服务控制台,依次单击 “默认实例”–“命名空间”- “创建命名空间”,在 “创建命名空间” 弹框中填写命名空间名称,然后单击 “确定”。本示例命令空间名称是docker_space10

image.png

选择 “默认实例”-“镜像仓库”- “创建镜像仓库”,在 “创建镜像仓库” 弹框中选择 “命名空间”,填写仓库名称和摘要 ,然后单击 “下一步”。

image.png

单击 “本地仓库”标签,单击“创建镜像仓库”按钮。转到镜像仓库列表页面。

image.png

在镜像仓库列表,选择上一步创建的镜像仓库,单击“管理”,查看镜像仓库详情。在基本信息页面有操作指南和镜像描述。

image.png

接下来进行镜像推送,本步骤命令中涉及的远程镜像地址替换为所创建的镜像仓库的公网地址。

执行以下命令登录到阿里云Docker Registry。命令中的用户名替换为自己的阿里云账号全名,公网地址替换为自己的镜像仓库的公网地址。

docker login --username="用户名" registry.cn-qingdao.aliyuncs.com

输入远程镜像仓库密码,密码为开通服务时设置的密码。

命令运行结果如下所示,表示登录成功:

image.png

查看本地镜像列表

image.png

标记本地镜像,将其归入远程仓库

docker tag demo:v1 公网地址

将本地镜像推送到远程仓库,推送时间较长,请耐心等待。

docker push  公网地址

命令运行结果如下所示,表示推送成功:

image.png

在镜像仓库详情页面,单击“镜像版本”,可以看到推送到仓库的镜像。

image.png

拉取指定版本的远程镜像。

docker pull 公网地址

image.png

查看本地镜像列表

docker images

基于拉取的远程镜像运行容器

docker run -d -p 8000:80 公网地址

image.png

使用curl工具访问容器

curl localhost:8000

命令运行结果如下所示:

image.png

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
7月前
|
Kubernetes 搜索推荐 Linux
Containerd容器镜像管理
Containerd容器镜像管理
|
5月前
|
存储 运维 Kubernetes
容器镜像的构建与管理实践
在云原生时代,容器技术已成为现代软件开发和运维不可或缺的一部分。本文将深入探讨容器镜像的构建流程、管理策略以及安全性考量,旨在为读者提供一套系统化的容器镜像管理方案。我们将从实际案例出发,分析容器镜像构建的最佳实践,同时指出常见的陷阱与误区。此外,文章还将介绍如何有效利用现有的工具和平台来提升容器镜像的安全性和管理效率,确保在快速迭代的开发周期中,能够维护镜像的一致性和可靠性。
109 0
|
安全 Cloud Native 双11
阿里云原生容器服务产品体系-阿里云容器镜像服务ACR介绍
阿里云原生容器服务产品体系-阿里云容器镜像服务ACR介绍
阿里云原生容器服务产品体系-阿里云容器镜像服务ACR介绍
|
存储 JSON 数据格式
容器镜像管理命令
本实验介绍了容器镜像管理相关命令
|
存储 运维 供应链
《云原生架构容器&微服务优秀案例集》——04 交通/物流——丽迅物流 通过 ACR EE 管理大规模容器镜像,快速响应业务需求
《云原生架构容器&微服务优秀案例集》——04 交通/物流——丽迅物流 通过 ACR EE 管理大规模容器镜像,快速响应业务需求
153 0
|
弹性计算 运维 Cloud Native
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(1)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(1)
185 0
|
Cloud Native 对象存储 数据安全/隐私保护
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(2)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(2)
189 0
|
Cloud Native 对象存储 容器
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(3)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(3)
115 0
|
Kubernetes Cloud Native Linux
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(4)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(4)
145 0
|
2月前
|
Linux 应用服务中间件 Shell
docker学习--docker容器镜像常用命令大全(简)
本文档详细介绍了Docker中的镜像命令与容器管理命令。镜像命令部分涵盖了镜像搜索、下载、上传等操作;容器管理命令则包括了容器的创建、启动、停止、删除及日志查看等功能。通过具体示例,帮助用户更好地理解和使用Docker相关命令。
181 0