前提:安装配置好docker,可参考我这篇 基于CentOS7安装配置docker与docker-compose。
一、设置访问凭证
1.1 容器镜像服务ACR
登录进入阿里云首页,点击 产品-容器-容器镜像服务ACR
点击管理控制台
1.2 进入控制台-点击实例列表
个人容器镜像托管服务,限额使用
1.3 创建个人版
个人容器镜像托管服务,限额使用
知晓个人版无SLA保障且有使用限制,请勿在生产业务中使用
创建中
创建成功
1.4 设置Registry登录密码
点击确定
点击确定
初始化成功
1.5 查看访问凭证
在上图中点击 “访问凭证”,按下图复制访问凭证
1.6 复制粘贴凭证 Login Succeeded
Login Succeeded
1.7 设置固定密码
设置固定密码,手机验证
全过程
1.8 个人版运行中
1.9 第一步 访问凭证-设置访问密码完成(右下角有显示)
1.10 容器镜像服务个人版将于2023年8月20日起取消个人版实例的镜像安全扫描-镜像同步功能
二、创建命名空间
2.1 创建命名空间相关说明
创建命名空间相关说明:
1、一个账号最多可以创建 3 个命名空间
2、命名空间创建参考:
推荐创建的命名空间用来对应一个公司、组织或个人用户,例如Aliyun、Obama。不推荐用来对应一个模块
或系统,例如Tomcat、CentOS,应用或模块推荐使用仓库进行管理。
3、定义您的镜像仓库命名空间,设置后不可修改。长度为2-30位,可填写小写英文字母、数字,可使用的分隔
符包括“_”、“-”(分隔符不能在首位或末位)
2.2 点击右下角命名空间 第二步
2.3 创建命名空间-2023815_djc-命名空间创建参考
创建命名空间-2023815_djc成功
2.4 第二步-命名空间-创建命名空间完成
三、创建镜像仓库rep2023815
注意: 这里的镜像仓库名rep2023815有误,容易无法区分镜像,但过程和步骤没问题,建议直接从 四、创建镜像仓库mysql全过程 和 五、将mysql镜像推送到Registry-镜像仓库mysql 开始阅读,再看 七、总结 ,减少无用功。
3.1 点击右下角镜像仓库 第三步
3.2 点击创建镜像仓库
3.3 代码源选择本地仓库
代码源 选择本地仓库 ,。可以通过命令行推送镜像到镜像仓库 。
3.4 其他代码源介绍
3.4.1 代码源-Codeup介绍
3.4.2 代码源-GitHub
3.4.3代码源-Bitbucket
3.4.4代码源-私有GitLab
3.4.5 代码源-本地仓库
3.5 代码源选择本地仓库 -镜像仓库rep2023815创建成功
3.5.1 仓库rep2023815-基本信息-操作指南
3.5.2 镜像仓库rep2023815-基本信息-制品描述
3.6 镜像仓库rep2023815-触发器
3.7 仓库rep2023815-镜像版本
3.8 将jdk11镜像推送到Registry-镜像仓库rep2023815
docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
//输入之前设置的密码
docker tag 526230ab6ddf registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:11
docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:11
3.9 将nginx镜像推送到Registry–镜像仓库rep2023815
docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
输入之前设置的密码
docker tag 0e901e68141f registry.cnhangzhou.aliyuncs.com/2023815_djc/rep2023815:v1.21.6
docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:v1.21.6
3.10 将mysql8.0.31镜像推送到Registry-镜像仓库rep2023815
//1-登录 在终端中输入访问凭证,登录Registry实例
docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
输入之前设置的密码
//2-tag
//docker images
//mysql 8.0.31 484689f290f 8 months ago 538MB
//docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:[镜像版本号]
docker tag 7484689f290f registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:v8.0.31
3-push
//docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:v8.0.31
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
3.12 镜像仓库一览
注意: 这里的镜像仓库名rep2023815有误,容易无法区分镜像,但过程和步骤没问题,建议直接从 四、创建镜像仓库mysql全过程 和 五、将mysql镜像推送到Registry-镜像仓库mysql 开始阅读,再看 七、总结 ,减少无用功。
四、创建镜像仓库mysql全过程
4.1 首页
4.2 点击管理控制台
4.3 进入实例列表
4.4 点击进入镜像仓库
4.5 点击创建镜像仓库
点击“下一步”
4.6 镜像仓库mysql-基本信息
提示点击“添加仓库成功”
4.6.1 镜像仓库mysql-基本信息-操作指南
操作指南
1. 登录阿里云Docker Registry
$ docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
//输入之前设置的密码
您可以在访问凭证页面修改凭证密码。
2. 从Registry中拉取镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]
3. 将镜像推送到Registry
$ docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
4. 选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录。
5. 示例
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
registry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB
$ docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
使用 "docker push" 命令将该镜像推送至远程。
$ docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
4.6.2 镜像仓库mysql-基本信息-制品描述
4.7 镜像仓库可以查看到刚刚创建好的mysql镜像仓库
五、将mysql镜像推送到Registry-镜像仓库mysql
5.1 将镜像推送到Registry-操作指南
参考 4.6.1 仓库mysql-基本信息-操作指南 中的第3点。
3. 将镜像推送到Registry
docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
输入之前设置的密码
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
5.2 docker images 查看需要上传push的镜像信息
IMAGE ID 与 镜像版本号(TAG)
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
5.3 将mysql镜像推送到Registry-镜像仓库mysql
5.3.1 将mysql镜像推送到Registry-镜像仓库mysql-命令
3. 将镜像推送到Registry
//1-login
docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
输入之前设置的密码
//2-tag
//这个命令并没有推送镜像,只是给镜像指定一个版本,这个版本不是指本地镜像的版本,而是推送后在阿里云仓库的版本。
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]
//3-push
docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]
-----------
//1-login
//连续上传,只需要登录一次
docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
输入之前设置的密码
-------------mysql 8.0.29-----------------------
//2-tag
docker tag 33037edcac9b registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:8.0.29
//3-push
docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:8.0.29
-------------mysql 8.0.31-----------------------
//2-tag
docker tag 7484689f290f registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:8.0.31
//3-push
docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:8.0.31
【说明】:
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]
这个命令并没有推送镜像,只是给镜像指定一个版本,这个版本不是指本地镜像的版本,而是推送后在阿里云仓库的版本。
//tag后面的是你要推送的镜像id
//后面是你的镜像仓库地址,直接去创建好的仓库去复制
5.3.2 将mysql镜像推送到Registry–镜像仓库mysql-截图
Digest:该镜像的摘要信息。当您下载镜像时,最后一行中会出现这个值。
镜像ID: 使用1.10以上版本的客户端推送、拉取镜像时,这个值在客户端和服务端能够保持一致。否则这个值
将是随机的不予提供。
5.4 mysql8.0.31推送到Registry-镜像仓库mysql的一些问题
镜像仓库rep2023815也推送了一个mysql8.0.31的镜像,见 3.10 将mysql8.0.31镜像推送到Registry-镜像仓库rep2023815。
5.5 推送mysql镜像到Registry-镜像仓库mysql后再次使用docker images
发现推送到Registry后会在本地也生成一个 相同IMAGE ID的镜像,如下图所示。
5.6 进入阿里云镜像仓库查看推送到Registry(镜像仓库mysql)的mysql镜像
点击mysql镜像仓库,点击镜像版本
六、将之前使用dockerfile手动构建JDK11镜像推送到Registry-镜像仓库jdk
文章见 使用dockerfile手动构建JDK11镜像运行容器并校验
3. 将镜像推送到Registry
docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
输入之前设置的密码
//docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/2023815_djc/jdk:[镜像版本号]
docker tag 526230ab6ddf registry.cn-hangzhou.aliyuncs.com/2023815_djc/jdk:11
//docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/jdk:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/jdk:11
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
6.1 创建镜像仓库jdk
6.2 jdk镜像仓库-本地仓库-基本信息-操作指南
docker images
这里可以看到本地存在两个同IMAGE ID的镜像,TAG都是11,一个是在使用dockerfile手动构建JDK11镜像运行容器并校验 中手动使用 docker build -t java:11 . 命令构建的,另外一个则是在
3.9 将jdk11镜像推送到Registry-镜像仓库rep2023815推送到rep2023815镜像仓库后,后会在本地也生成一个 相同IMAGE ID的镜像。
6.3 将jdk镜像推送到Registry-镜像仓库jdk截图
可以发现,这里和正常推送到仓库成功后显示的信息不同,这里显示Mounted from 2023815_djc/rep2023815,
1、此时rep2023815和jdk这两个镜像仓库相同的是中都推送了jdk11这个镜像,并且IMAGE ID和TAG都相同。
2、但是rep2023815镜像仓库中的REPOSITORY就是registry.cnhangzhou.aliyuncs.com/2023815_djc/rep2023815,
而且还存放了mysql8.0.31的镜像。
3、jdk镜像仓库的推送的jdk的REPOSITORY是registry.cn-hangzhou.aliyuncs.com/2023815_djc/jdk,只存放了jdk这一种镜像。
所以这里显示的 Mounted from 2023815_djc/rep2023815,应该是从和镜像仓库jdk同一命名空间2023815_djc,存放相同IMAGE ID的jdk11镜像的镜像仓库rep2023815中(3.9 将jdk11镜像推送到Registry-镜像仓库rep2023815),直接把该jdk11镜像同步到了镜像仓库jdk,所以显示和正常推送的不同。
6.4 镜像仓库jdk
刚刚推送到Registry-镜像仓库jdk的jdk11镜像
6.5 镜像仓库jdk-安全扫描
6.6 镜像仓库jdk-镜像层信息
会发现这里镜像层信息与我们 使用dockerfile手动构建JDK11镜像运行容器并校验中的dockerfile文件内容大致相同。
七、总结
docker images 各参数说明:
REPOSITORY:表示镜像的仓库源名
TAG:镜像的标签或版本
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
1、同一镜像仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 jdk仓库源里,有 11、12、13....20 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义并区分不同的镜像,例如jdk:11,jdk:12,jdk:13,jdk:20等。
2、所以一个镜像仓库只存放一种镜像,镜像仓库名要见名知意,如镜像仓库jdk,就知道这个镜像仓库存放的是jdk11版本。
registry.cn-hangzhou.aliyuncs.com/2023815_djc/jdk:11
如镜像仓库mysql,就知道这个镜像仓库存放的是mysql:8.0.29和mysql:8.0.31
这两个版本。
registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:8.0.29
registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:8.0.31
如图一、图二所示。
3、所以rep2023815中存放了好几种镜像,mysql,jdk,nginx,是错误的存放方式,容易无法区分镜像,如图一、图二所示。
//jdk
registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:11
//mysql
registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:v8.0.31
//nginx
registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:v1.21.6
4、所以镜像仓库名一般写成应用名就可以了,如mysql,oracle,jdk等。
5、发现推送到Registry(某镜像仓库)后会在本地也生成一个相同IMAGE ID的镜像,如图一、图二所示。
7.1 图一如下
7.2 图二如下
八、容器镜像服务ACR个人版产品功能调整公告 相关(2023年8月20日)
容器镜像服务ACR个人版产品功能调整公告 更新时间:2023-06-26 14:25
尊敬的阿里云容器镜像服务ACR用户:
容器镜像服务ACR计划从2023年8月20日起取消容器镜像服务ACR个人版的镜像安全扫描、镜像同步功能,如果有镜像安全及跨地域镜像高效分发需求,建议提前规划迁移至容器镜像服务ACR企业版实例。具体操作,请参见个人版迁移。变更内容
自2023年8月20日起,容器镜像服务ACR个人版镜像安全扫描、镜像同步功能将不再支持发起新任务,所有已执行完成的任务将不再支持查询任务状态及详情。请及时关注本次产品变更内容,以免影响您的后续使用,感谢您的配合。
2023-8-18 05:27:45
个人版迁移
访问VPC的服务关联角色
个人版实例镜像导入到企业版实例
使用个人版域名访问企业版实例
【转载aliyun官方-容器镜像服务 ACR】Docker常见问题
使用dockerfile手动构建JDK11镜像运行容器并校验