前提:安装配置好docker,可参考我这篇 基于CentOS7安装配置docker与docker-compose。
登录进入阿里云首页,点击 产品-容器-容器镜像服务ACR
点击管理控制台
个人容器镜像托管服务,限额使用
知晓个人版无SLA保障且有使用限制,请勿在生产业务中使用
创建中
创建成功
在上图中点击 “访问凭证”,按下图复制访问凭证
创建命名空间相关说明:
1、一个账号最多可以创建 3 个命名空间
2、命名空间创建参考:
推荐创建的命名空间用来对应一个公司、组织或个人用户,例如Aliyun、Obama。不推荐用来对应一个模块
或系统,例如Tomcat、CentOS,应用或模块推荐使用仓库进行管理。
3、定义您的镜像仓库命名空间,设置后不可修改。长度为2-30位,可填写小写英文字母、数字,可使用的分隔
符包括“_”、“-”(分隔符不能在首位或末位)
注意: 这里的镜像仓库名rep2023815有误,容易无法区分镜像,但过程和步骤没问题,建议直接从 四、创建镜像仓库mysql全过程 和 五、将mysql镜像推送到Registry-镜像仓库mysql 开始阅读,再看 七、总结 ,减少无用功。
代码源 选择本地仓库 ,。可以通过命令行推送镜像到镜像仓库 。
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
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
//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]和[镜像版本号]参数。
注意: 这里的镜像仓库名rep2023815有误,容易无法区分镜像,但过程和步骤没问题,建议直接从 四、创建镜像仓库mysql全过程 和 五、将mysql镜像推送到Registry-镜像仓库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.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]和[镜像版本号]参数。
IMAGE ID 与 镜像版本号(TAG)
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
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
//后面是你的镜像仓库地址,直接去创建好的仓库去复制
Digest:该镜像的摘要信息。当您下载镜像时,最后一行中会出现这个值。
镜像ID: 使用1.10以上版本的客户端推送、拉取镜像时,这个值在客户端和服务端能够保持一致。否则这个值
将是随机的不予提供。
镜像仓库rep2023815也推送了一个mysql8.0.31的镜像,见 3.10 将mysql8.0.31镜像推送到Registry-镜像仓库rep2023815。
发现推送到Registry后会在本地也生成一个 相同IMAGE ID的镜像,如下图所示。
文章见 使用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]和[镜像版本号]参数。
docker images
这里可以看到本地存在两个同IMAGE ID的镜像,TAG都是11,一个是在使用dockerfile手动构建JDK11镜像运行容器并校验 中手动使用 docker build -t java:11 . 命令构建的,另外一个则是在
3.9 将jdk11镜像推送到Registry-镜像仓库rep2023815推送到rep2023815镜像仓库后,后会在本地也生成一个 相同IMAGE ID的镜像。
可以发现,这里和正常推送到仓库成功后显示的信息不同,这里显示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,所以显示和正常推送的不同。
会发现这里镜像层信息与我们 使用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的镜像,如图一、图二所示。
容器镜像服务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镜像运行容器并校验