快速开始!前往:容器镜像服务控制台
Docker的使用条件和基础不再复述Docker安装和Docker镜像下载的加速器文档在下方的"相关链接"中已经给出
Docker的镜像存储中心通常被称为Registry。当您需要获取Docker镜像的时候,首先需要登录Registry,然后拉取镜像。在您修改过镜像之后,您可以再次将镜像推送到Registry中去。
Docker的镜像地址是什么?我们来看一个完整的例子。(以容器服务的公共镜像为例)registry.cn-hangzhou.aliyuncs.com/acs/agent:0.8
registry.cn-hangzhou.aliyuncs.com 叫做 "Registry域名"。 acs 叫做 "命名空间"。 agent 叫做 "仓库名称"。 0.8 叫做 "Tag"、"镜像标签"(非必须,默认latest)。将这个几个完全独立的概念组合一下,还有几个术语。 registry.cn-hangzhou.aliyuncs.com/acs/agent 称为 "仓库坐标"。 acs/agent 称为 "仓库全名"(通常在API中使用)。本文的重点是介绍Docker最常用的三个命令:login、pull、push。
以阿里云杭州公网Registry为例:登陆时必须指明登陆的 "Registry域名"
docker@default-online:~$ docker login registry.cn-hangzhou.aliyuncs.com Username: sample@alibaba-inc.com Password: Login Succeeded登陆成功之后会显示 Login Succeeded。
另外你还可以通过查看这个文件,确认您的登陆信息。
docker@default-online:~$ cat ~/.docker/config.json { "auths": { "registry.cn-hangzhou.aliyuncs.com": { "auth": "XXXXXXXXXXXXXXXXXXXXXX" } } }首先子账户需要登录控制台,设置一下自己的Registry登陆密码。然后使用[子账户名]@[企业别名]作为用户名进行登陆。RAM控制台可以设置与查看主账户的企业别名。如果没有企业别名,企业别名默认为主账户的UID。
举例:子账户名为subaccount,企业别名为misaka-network
docker@default-online:~$ docker login registry.cn-hangzhou.aliyuncs.com Username: subaccount@misaka-network Password: Login Succeeded拉取镜像首先需要提示您的是。
如果你要拉取Docker官方的镜像的话。参考一下下方相关链接中的加速器文章。如果你要拉取公共仓库下的镜像的话,不登陆Registry也是可以拉去的。以容器服务的公共镜像 registry.cn-hangzhou.aliyuncs.com/acs/agent:0.8 为例
docker@default-online:~$ docker pull registry.cn-hangzhou.aliyuncs.com/acs/agent:0.8 0.8: Pulling from acs/agent 5a026b6c4964: Already exists e4b621e8d9cb: Already exists 8bc2fd04bdd4: Pull complete a977b0087b3e: Pull complete 8f6e00ea13c6: Pull complete 875dd8c9666f: Pull complete 9c07bcabc35d: Pull complete Digest: sha256:cac848bd31bccf2a041bda7b57e3051341093abde6859df9ee9d332dfec6ddd9 Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/acs/agent:0.8查看一下下载下来的镜像(注意仓库坐标和Tag,这两个概念)
docker@default-online:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry.cn-hangzhou.aliyuncs.com/acs/agent 0.8 b9ba5841bdb0 24 hours ago 42.18 MB镜像在本地环境构建或是打包好之后,就可以推到Registry啦。当然前提条件是,你有对这个仓库的读写权限或是读写授权。否则你会看到下面这样的错误。
docker@default-online:~$ docker push registry.cn-hangzhou.aliyuncs.com/acs/agent:0.8 The push refers to a repository [registry.cn-hangzhou.aliyuncs.com/acs/agent] 359f80267111: Layer already exists 7e5fa28d90b8: Layer already exists b20d7f600f63: Layer already exists 4a159b4f8370: Layer already exists 7c3712ebe877: Layer already exists d91d130a53aa: Layer already exists fcad8ad5a40f: Layer already exists unauthorized: authentication required主要需要排查有两种可能
用户使用了阿里云账户的登陆密码,而没有使用Registry的独立登陆密码。Registry的登陆密码是在容器镜像服务的控制台上设置与修改的。用户使用了sudo进行登陆,这个时候系统第一个要求输入的密码是Linux的用户密码。很多用户在这里输入了Registry的登陆密码,导致登陆操作失败。区分这个错误的方式很简单,Linux的用户密码大多允许尝试三次,错误时会提示try again.。而Registry的登陆密码错误一次之后就会退出,并返回以下错误。 Error response from daemon: Get https://registry.cn-hangzhou.aliyuncs.com/v2/: unauthorized: authentication required提示Error: image xxx not found
自己下载的是公共仓库,那么问题应该在镜像地址不正确。请在控制台搜索一下这个公共仓库,检查一下想要下载的这个镜像版本是不是真实存在。自己想要下载的是一个私有仓库中的镜像,这时首先确认一下Registry登陆状态。cat ~/.docker/config.json可以看到所有登陆的Registry域名。里面是不是包括你想要下载镜像的Registry域名。如果没有的话,您需要参考上面的文档,先进行登陆操作。如果这里已经登陆了的话,那么您需要确认的就是您登陆的这个账户是否有权限下载这个镜像。子账户默认是没有任何权限的,参考下方相关链接中主子账户授权的文章。提示Error: filesystem layer verification failed for digest
极少数情况下偶现,下载的块文件检验失败。一般重试可以解决。
提示denied: requested access to the resource is denied
主要的排查步骤和docker pull基本一致,仅仅是授权要求的级别较pull更高一些。
容器镜像服务 控制台容器镜像服务 主子账户授权容器镜像服务 镜像安全扫描Docker Engine 镜像源站Docker Toolbox 镜像源站Docker 镜像加速器
相关资源:敏捷开发V1.0.pptx