背景知识
阿里云容器镜像服务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
接下来开始构建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指定镜像名称和标签。
查看镜像
docker images
基于demo:v1镜像运行一个容器。
docker run -d -p 8000:80 demo:v1
其中:
参数-d:设置容器运行模式为后台运行。
参数-p 8000:80 :将容器内部使用的网络端口80映射到主机8000端口。
查看容器列表
docker ps
使用curl工具访问容器,输出字符串。
curl localhost:8000
停止并删除容器。本示例容器的名字为dreamy_fermat:
docker stop dreamy_fermat
docker rm dreamy_fermat
接下来创建阿里云镜像仓库。
使用主账号登录阿里云,选择“控制台”,选择“产品与服务”-选择“容器镜像服务”。链接如下:https://www.aliyun.com/product/acr?spm=5176.28055625.J_4VYgf18xNlTAyFFbOuOQe.101.3ddd154aj6V5yC
单击“前往开通”。
单击“设置Registry登录密码” 。
设置阿里云Docker Registry登录密码,然后单击 “确定”。
在容器镜像服务控制台,依次单击 “默认实例”–“命名空间”- “创建命名空间”,在 “创建命名空间” 弹框中填写命名空间名称,然后单击 “确定”。本示例命令空间名称是docker_space10
选择 “默认实例”-“镜像仓库”- “创建镜像仓库”,在 “创建镜像仓库” 弹框中选择 “命名空间”,填写仓库名称和摘要 ,然后单击 “下一步”。
单击 “本地仓库”标签,单击“创建镜像仓库”按钮。转到镜像仓库列表页面。
在镜像仓库列表,选择上一步创建的镜像仓库,单击“管理”,查看镜像仓库详情。在基本信息页面有操作指南和镜像描述。
接下来进行镜像推送,本步骤命令中涉及的远程镜像地址替换为所创建的镜像仓库的公网地址。
执行以下命令登录到阿里云Docker Registry。命令中的用户名替换为自己的阿里云账号全名,公网地址替换为自己的镜像仓库的公网地址。
docker login --username="用户名" registry.cn-qingdao.aliyuncs.com
输入远程镜像仓库密码,密码为开通服务时设置的密码。
命令运行结果如下所示,表示登录成功:
查看本地镜像列表
标记本地镜像,将其归入远程仓库
docker tag demo:v1 公网地址
将本地镜像推送到远程仓库,推送时间较长,请耐心等待。
docker push 公网地址
命令运行结果如下所示,表示推送成功:
在镜像仓库详情页面,单击“镜像版本”,可以看到推送到仓库的镜像。
拉取指定版本的远程镜像。
docker pull 公网地址
查看本地镜像列表
docker images
基于拉取的远程镜像运行容器
docker run -d -p 8000:80 公网地址
使用curl工具访问容器
curl localhost:8000
命令运行结果如下所示: