容器镜像服务 Docker镜像的基本使用

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 容器镜像服务 Docker镜像的基本使用

容器镜像服务 Docker镜像的基本使用

快速开始!前往:容器镜像服务控制台

前言

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。

docker login

以阿里云杭州公网Registry为例:登陆时必须指明登陆的 "Registry域名"

docker@default-online:~$ docker login registry.cn-hangzhou.aliyuncs.com
Username: sample@alibaba-inc.com
Password:
Login Succeeded
AI 代码解读

登陆成功之后会显示 Login Succeeded。

另外你还可以通过查看这个文件,确认您的登陆信息。

docker@default-online:~$ cat ~/.docker/config.json
{
    "auths": {
        "registry.cn-hangzhou.aliyuncs.com": {
            "auth": "XXXXXXXXXXXXXXXXXXXXXX"
        }
    }
}
AI 代码解读

子账户如何登陆

首先子账户需要登录控制台,设置一下自己的Registry登陆密码。
然后使用[子账户名]@[企业别名]作为用户名进行登陆。RAM控制台可以设置与查看主账户的企业别名。如果没有企业别名,企业别名默认为主账户的UID。

举例:子账户名为subaccount,企业别名为misaka-network

docker@default-online:~$ docker login registry.cn-hangzhou.aliyuncs.com
Username: subaccount@misaka-network
Password:
Login Succeeded
AI 代码解读

docker pull

拉取镜像首先需要提示您的是。

  1. 如果你要拉取Docker官方的镜像的话。参考一下下方相关链接中的加速器文章。
  2. 如果你要拉取公共仓库下的镜像的话,不登陆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
AI 代码解读

查看一下下载下来的镜像(注意仓库坐标和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
AI 代码解读

docker push

镜像在本地环境构建或是打包好之后,就可以推到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
AI 代码解读

FAQ

docker login 失败

主要需要排查有两种可能

  1. 用户使用了阿里云账户的登陆密码,而没有使用Registry的独立登陆密码。Registry的登陆密码是在容器镜像服务的控制台上设置与修改的。
  2. 用户使用了sudo进行登陆,这个时候系统第一个要求输入的密码是Linux的用户密码。很多用户在这里输入了Registry的登陆密码,导致登陆操作失败。区分这个错误的方式很简单,Linux的用户密码大多允许尝试三次,错误时会提示try again.。而Registry的登陆密码错误一次之后就会退出,并返回以下错误。
Error response from daemon: Get https://registry.cn-hangzhou.aliyuncs.com/v2/: unauthorized: authentication required
AI 代码解读

docker pull 失败

提示Error: image xxx not found

  1. 自己下载的是公共仓库,那么问题应该在镜像地址不正确。请在控制台搜索一下这个公共仓库,检查一下想要下载的这个镜像版本是不是真实存在。
  2. 自己想要下载的是一个私有仓库中的镜像,这时首先确认一下Registry登陆状态。cat ~/.docker/config.json可以看到所有登陆的Registry域名。里面是不是包括你想要下载镜像的Registry域名。如果没有的话,您需要参考上面的文档,先进行登陆操作。如果这里已经登陆了的话,那么您需要确认的就是您登陆的这个账户是否有权限下载这个镜像。子账户默认是没有任何权限的,参考下方相关链接中主子账户授权的文章。

提示Error: filesystem layer verification failed for digest

极少数情况下偶现,下载的块文件检验失败。一般重试可以解决。

docker push 失败

提示denied: requested access to the resource is denied

主要的排查步骤和docker pull基本一致,仅仅是授权要求的级别较pull更高一些。

相关链接

容器镜像服务 控制台
容器镜像服务 主子账户授权
容器镜像服务 镜像安全扫描
Docker Engine 镜像源站
Docker Toolbox 镜像源站
Docker 镜像加速器

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
打赏
0
4
2
3
78505
分享
相关文章
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
275 93
docker环境安装kafka/Flink/clickhouse镜像
通过上述步骤和示例,您可以系统地了解如何使用Docker Compose安装和配置Kafka、Flink和ClickHouse,并进行基本的验证操作。希望这些内容对您的学习和工作有所帮助。
121 28
Docker Image即Docker镜像
Docker 镜像是 Docker 容器的基础,包含了运行应用程序所需的一切。通过 Dockerfile 可以方便地创建自定义镜像,并且利用 Docker 提供的命令可以轻松管理和使用这些镜像。掌握 Docker 镜像的创建、管理和使用,是进行容器化应用开发和部署的基础技能。希望本文能帮助读者更好地理解 Docker 镜像的概念和操作,提高开发和运维效率。
44 6
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
课时5:阿里云容器服务:最原生的集成Docker和云服务
Docker+consul容器服务的更新与发现
通过本文的介绍,我们详细探讨了如何结合Docker和Consul来实现容器服务的更新与发现。通过Consul的服务注册和发现功能,可以高效地管理和监控容器化服务,确保系统的高可用性和可扩展性。希望本文能帮助您在实际项目中更好地应用Docker和Consul,提高系统的可靠性和管理效率。
60 23
多种脚本批量下载 Docker 镜像:Shell、PowerShell、Node.js 和 C#
本项目提供多种脚本(Shell、PowerShell、Node.js 和 C#)用于批量下载 Docker 镜像。配置文件 `docker-images.txt` 列出需要下载的镜像及其标签。各脚本首先检查 Docker 是否安装,接着读取配置文件并逐行处理,跳过空行和注释行,提取镜像名称和标签,调用 `docker pull` 命令下载镜像,并输出下载结果。使用时需创建配置文件并运行相应脚本。C# 版本需安装 .NET 8 runtime。
58 1
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
299 15
docker centos镜像 npm安装包时报错“npm ERR! code ECONNRESET”
通过上述步骤,您可以有效解决在 Docker 中使用 CentOS 镜像安装 npm 包时遇到的 "npm ERR! code ECONNRESET" 错误。希望这些方法能帮助您顺利进行 npm 包的安装。
127 26
Docker-基础(数据卷、自定义镜像、Compose)
通过数据卷实现持久化存储,通过自定义镜像满足特定需求,通过Docker Compose方便地管理多容器应用
96 27
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
203 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结

相关产品

  • 容器镜像服务
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等