基于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

相关实践学习
通过workbench远程登录ECS,快速搭建Docker环境
本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4天前
|
Kubernetes 搜索推荐 Linux
Containerd容器镜像管理
Containerd容器镜像管理
|
8月前
|
存储 JSON 数据格式
容器镜像管理命令
本实验介绍了容器镜像管理相关命令
101 0
|
12月前
|
存储 运维 供应链
《云原生架构容器&微服务优秀案例集》——04 交通/物流——丽迅物流 通过 ACR EE 管理大规模容器镜像,快速响应业务需求
《云原生架构容器&微服务优秀案例集》——04 交通/物流——丽迅物流 通过 ACR EE 管理大规模容器镜像,快速响应业务需求
110 0
|
12月前
|
弹性计算 运维 Cloud Native
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(1)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(1)
125 0
|
12月前
|
Cloud Native 对象存储 数据安全/隐私保护
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(2)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(2)
144 0
|
12月前
|
Cloud Native 对象存储 容器
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(3)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(3)
|
12月前
|
Kubernetes Cloud Native Linux
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(4)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(4)
123 0
|
12月前
|
弹性计算 Cloud Native 网络安全
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(5)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(5)
|
12月前
|
弹性计算 Cloud Native 网络安全
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(6)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(6)
|
12月前
|
存储 运维 供应链
《2023云原生实战案例集》——03 交通/物流——丽迅物流 通过ACR EE管理大规模容器镜像,快速响应业务需求
《2023云原生实战案例集》——03 交通/物流——丽迅物流 通过ACR EE管理大规模容器镜像,快速响应业务需求