Docker 进阶 发布自己的Docker镜像 将镜像上传到阿里云和Docker Hub

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 上传自己制作的docker镜像的方法,将docker镜像上传到Docker Hub,阿里云的两种方法,以及上传镜像时可能遇见的问题和解决办法,每一步的详解和上传镜像时的规范。

将镜像发布到Docker Hub上:
Docker镜像是可以发布出去让别人访问或使用的,我们可以将自己制作的镜像发布到Docker Hub 或者发布到阿里云

上传镜像的步骤:

1、注册账号。

2、确定这个账号可以登录。

3、在我们的服务器上提交自己的镜像。

4、登录完毕后就可以提交镜像了

首先我们要注册docker hub的账号,因为上传镜像是需要登录账号才能上传的

注册Docker Hub账号:
docker Hub地址:
Docker Hub
https://hub.docker.com/
image.png

我们要先登录,才能docker push 上传镜像,没有登录我们是上传不了镜像的

[root@localhostaaa]#docker login --help

Usage: docker login [OPTIONS] [SERVER]

Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.

Options:
-p, --password string Password

  --password-stdin    Take the password from stdin

-u, --username string Username

用法:docker登录选项
登录Docker注册表。
如果未指定服务器,则默认值由守护进程定义。
选项:
-p、 --密码字符串密码
--密码stdin从stdin获取密码
-u、 --用户名字符串用户名
 在容器中登录和退出Docker Hub:
登录docker hub:
命令:
docker login -u 用户名 -p 密码 #不建议在命令里加-p,这样会显示出密码,不写-p回车后就会出现输入密码的提示,然后再输入密码,更安全。如下:

[root@localhost aaa]# docker login -u huazhiwei
Password:

出现这个,就代表登录成功:
Login Succeeded

退出登录docker hub

登出、退出: docker logout
命令:
docker logout
上传Docker镜像
登录完毕后就可以提交镜像了,就是一步:docker push

上传镜像的命令:docker hub

注意事项:
上传的镜像需要有作者名,镜像名,和镜像标签,和docker hub镜像仓库重名的镜像是会上传失败的。

可以通过:docker tag 来修改镜像名和标签:

使用方法:

docker tag 镜像id 修改的镜像名:标签

例:

上传本地的镜像:

[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos2022/vim 2.0 a498b068b5da 16 minutes ago 231MB
huazhiwei/centosvim 2022 a498b068b5da 16 minutes ago 231MB

push 镜像

[root@localhost ~]# docker push huazhiwei/centosvim:vim
The push refers to repository [docker.io/huazhiwei/centosvim]
74ddd0ec08fa: Pushing 226.9MB/231.3MB

docker push 作者名/镜像名:标签

Docker Hub需要规范上传镜像:

docker push 上传镜像 要带镜像作者名字,什么镜像,镜像的标签

1、写作者名字是为了知道是谁做的镜像,可以写笔名,比如孙悟空的另一个名字是齐天大圣。

2、写什么镜像是让别人知道这个是什么镜像,比如centos镜像,mysql镜像,nginx镜像。

3、写标签是为了让大家知道你这个镜像有什么作用,与官网的镜像有什么区别,比如centos:vim,大家就知道你这个centos镜像比官方多了vim的功能。
上传镜像可能会遇到的问题:

问题一:

[root@localhost /]# docker push paidaxing/centos:2.1
The push refers to repository [docker.io/paidaxing/hzw/centos]
An image does not exist locally with the tag: paidaxing/hzw/centos

问题二:

[root@localhost ~]# docker push mycentos:vim
The push refers to repository [docker.io/library/mycentos]
74ddd0ec08fa: Preparing
denied: requested access to the resource is denied

这样的问题就是我们的镜像名字不正确,或者没有标签,我们给镜改个名字像加个标签:

给镜像增加一个tag

docker tag 镜像id 给镜像改的名字和标签

将镜像改个名字并加个标签 名字:huazhiwei/centosvim 标签:2022

[root@localhost ~]# docker push huazhiwei/centosvim:2022

出现这个就代表正在上传了

The push refers to repository [docker.io/huazhiwei/centosvim]
74ddd0ec08fa: Pushing 6.056MB/231.3MB

可以发现,我们提交的时候也是一层层来发布的,docker镜像的特点。

image.png

将镜像发布到阿里云上:
1、注册并登录阿里云账号

2、找到容器镜像服务

3、创建命名空间(一个账号只能创建3个命名空间)

4、创建容器镜像

注册并登录阿里云:
https://www.aliyun.com/
https://www.aliyun.com/
image.png

登录后点击控制台:

 搜索容器镜像服务:
image.png

 根据需求创建企业版实例或创建个人版实例:

image.png

 创建镜像仓库、命名空间:

image.png

 设置仓库名称,公开或私有仓库:
image.png

 选择本地仓库:
image.png

 创建完成后就会跳转到阿里云官方上传镜像的步骤:

 点击镜像仓库也能查看上传步骤:
 宿主机命令行登录阿里云账号:
image.png

 push镜像到阿里云:
 上传镜像到阿里云对比与docker Hub稍微更加复杂,因为阿里云对镜像命名的规则比较严格,需最好按照阿里云官网步骤命名,不然很容易上传失败,因为阿里云官网会按照个人的镜像仓库和命名规则给出命名代码,只需要修改镜像id和容器名即可。如下图:

 push镜像到阿里云和Docker Hub的步骤是一样的,就是需要创建不同镜像仓库的账号,因为docker上传镜像到镜像仓库需要登录对应的镜像仓库上传,所以区别就在于创建对应镜像仓库的步骤。

以下就是成功上传阿里云的实例:

 上传完成后即在镜像版本处查看自己上传的镜像:

点击层信息即可查看自己的镜像信息:

 可以显示镜像的每一层是怎么做的,镜像的构建方式都是可以查看的,也可以开放给别下载。

 docker常用命令汇总:
 学完上传docker镜像,在日常使用docker已经没有多大问题了,以下就是docker命令的汇总:
image.png

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
Java Linux C语言
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
497 90
|
11天前
|
存储 运维 应用服务中间件
Docker Image即Docker镜像
Docker 镜像是 Docker 容器的基础,包含了运行应用程序所需的一切。通过 Dockerfile 可以方便地创建自定义镜像,并且利用 Docker 提供的命令可以轻松管理和使用这些镜像。掌握 Docker 镜像的创建、管理和使用,是进行容器化应用开发和部署的基础技能。希望本文能帮助读者更好地理解 Docker 镜像的概念和操作,提高开发和运维效率。
68 13
|
24天前
|
消息中间件 Kafka 流计算
docker环境安装kafka/Flink/clickhouse镜像
通过上述步骤和示例,您可以系统地了解如何使用Docker Compose安装和配置Kafka、Flink和ClickHouse,并进行基本的验证操作。希望这些内容对您的学习和工作有所帮助。
141 28
|
6天前
|
安全 持续交付 云计算
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
课时5:阿里云容器服务:最原生的集成Docker和云服务
|
10天前
|
JavaScript Shell C#
多种脚本批量下载 Docker 镜像:Shell、PowerShell、Node.js 和 C#
本项目提供多种脚本(Shell、PowerShell、Node.js 和 C#)用于批量下载 Docker 镜像。配置文件 `docker-images.txt` 列出需要下载的镜像及其标签。各脚本首先检查 Docker 是否安装,接着读取配置文件并逐行处理,跳过空行和注释行,提取镜像名称和标签,调用 `docker pull` 命令下载镜像,并输出下载结果。使用时需创建配置文件并运行相应脚本。C# 版本需安装 .NET 8 runtime。
77 1
|
1月前
|
网络协议 Linux 网络安全
docker centos镜像 npm安装包时报错“npm ERR! code ECONNRESET”
通过上述步骤,您可以有效解决在 Docker 中使用 CentOS 镜像安装 npm 包时遇到的 "npm ERR! code ECONNRESET" 错误。希望这些方法能帮助您顺利进行 npm 包的安装。
137 26
|
2月前
|
存储 Docker 容器
Docker-基础(数据卷、自定义镜像、Compose)
通过数据卷实现持久化存储,通过自定义镜像满足特定需求,通过Docker Compose方便地管理多容器应用
98 27
|
2月前
|
存储 Docker 容器
Docker-基础(数据卷、自定义镜像、Compose)
通过数据卷实现持久化存储,通过自定义镜像满足特定需求,通过Docker Compose方便地管理多容器应用。掌握这些Docker基础概念和操作,可以显著提高开发和部署效率,确保应用程序的可移植性和可扩展性。
83 22
|
Kubernetes Cloud Native 算法
【Docker】企业进阶实战【Docker-Compose/Stack/Secret/Swarm/Config】
【Docker】企业进阶实战【Docker-Compose/Stack/Secret/Swarm/Config】
223 0
【Docker】企业进阶实战【Docker-Compose/Stack/Secret/Swarm/Config】
|
SQL NoSQL Cloud Native
【云原生】1.5 Docker 进阶实战
创建一个redis (mkdir redis),然后打开 redis(cd redis),准备好配置文件(vi redis.conf),输入 :wq 退出并保存。 redis使用自定义配置文件启动(记得要添加安全组)
133 0
【云原生】1.5 Docker 进阶实战