如何实现将 docker 镜像推送到远程共有/私有镜像仓库

本文详细介绍如何将本地Docker镜像推送到阿里云的私有或共有镜像仓库,包括镜像仓库的创建、镜像的登录、拉取、推送及通过专有网络地址加速等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                   《 将本地Docker镜像发布到私有或共有库 》

前言

前面带领读者完成了个人镜像仓库的创建,通过本篇的学习,熟悉如何创建远程镜像仓库,并将本地 docker images 推送到远程创建的镜像库中,在共有云镜像服务平台进行搜索,再将上传的进行拉取到本地。

 

将本地Docker镜像发布到私有或共有库

1、先了解阿里云的 Docke 生态系统,如下图:

2、使用在前面通过 dockerfile 自定义构建的 redis 镜像为例,输入命令 “ docker images huazai/db/redis ” 查看,内容如下:

[root@localhost ~]# docker images huazai/db/redis
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
huazai/db/redis     v1.0                f8ea30f3fbef        About an hour ago   94.9MB

 

3、首先需要注册一个阿里云账号,(阿里云注册入口)并登录阿里云控制台,然后 产品与服务 -> 容器镜像服务 -> 创建镜像仓库,如下图:

 

4、可以创建私有镜像仓库,也可以创建共有镜像仓库,这儿一共有镜像仓库为例,如下图:

 

5、如果有其它源码托管平台的账号可以进行绑定后上传,这儿直接使用本地仓库为示例,选择 “ 本地仓库 ” 后,点击创建镜像仓库,如下图:

 

6、镜像仓库创建完成后,如下图:

 

将本地 docker 镜像拉取/推送到远程仓库

1、登录阿里云Docker Registry

sudo docker login --username=[个人用户名] registry.cn-shanghai.aliyuncs.com

首先需要登录到仓库,登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在产品控制台首页修改登录密码。

 

2、从Registry中拉取镜像

sudo docker pull registry.cn-shanghai.aliyuncs.com/[个人镜像地址]:[镜像版本号]

 

3、将镜像推送到Registry

sudo docker login --username=[个人用户名] registry.cn-shanghai.aliyuncs.com
sudo docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/[个人镜像地址]:[镜像版本号]
sudo docker push registry.cn-shanghai.aliyuncs.com/[个人镜像地址]:[镜像版本号]

请根据实际镜像信息替换示例中的[个人用户名]、[个人镜像地址]、[ImageId]和[镜像版本号]参数

 

4、选择合适的镜像仓库地址

从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。

如果您使用的机器位于经典网络,请使用 registry-internal.cn-shanghai.aliyuncs.com 作为Registry的域名登录,并作为镜像命名空间前缀。

如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-shanghai.aliyuncs.com 作为Registry的域名登录,并作为镜像命名空间前缀。

 

5、示例

先使用 docker login 登录,

[root@localhost ~]# sudo docker login --username=芝麻开门尽然真开了 registry.cn-shanghai.aliyuncs.com
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@localhost ~]# 

这儿会有一个镜像,可以先不用管!

使用"docker images"命令找到需要推送的镜像,将该镜像名称中的域名部分变更为Registry专有网络地址。

[root@localhost ~]# docker images huazai/db/redis
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
huazai/db/redis     v1.0                f8ea30f3fbef        3 hours ago         94.9MB

 

使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。

[root@localhost ~]# sudo docker tag f8ea30f3fbef registry.cn-shanghai.aliyuncs.com/huazai_studio/my_db_images:v1.0-db6108
[root@localhost ~]# sudo docker push registry.cn-shanghai.aliyuncs.com/huazai_studio/my_db_images:v1.0-db6108
The push refers to repository [registry.cn-shanghai.aliyuncs.com/huazai_studio/my_db_images]
e76e670147c1: Pushed 
6a1f6aaf952b: Pushed 
eb2177dbb90f: Pushed 
dcb5f49384db: Pushed 
247eecd82cd8: Pushed 
237472299760: Pushed 
v1.0-db6108: digest: sha256:23f23bbd60c771915d13b9da8280faf57b71368d871a5cf4af988aa2ebceb36f size: 1573

 

上传完成后,就可以在管理控制台中查找到该镜像了,如下图:

 

6、上传成功后,还可以在阿里云的共有云中进行搜索,就能够搜索到了,如下图:

 

7、将刚才上传的镜像拉取到本地镜像仓库中,通过 docker pull 进行拉取,拉取内容如下:

[root@localhost ~]# sudo docker pull registry.cn-shanghai.aliyuncs.com/huazai_studio/my_db_images:v1.0-db6108
v1.0-db6108: Pulling from huazai_studio/my_db_images
f17d81b4b692: Pull complete 
c5a740602d98: Pull complete 
8d5fef301c0d: Pull complete 
08e988144908: Pull complete 
f52d5d9fd116: Pull complete 
fb2fe4254d15: Pull complete 
Digest: sha256:23f23bbd60c771915d13b9da8280faf57b71368d871a5cf4af988aa2ebceb36f
Status: Downloaded newer image for registry.cn-shanghai.aliyuncs.com/huazai_studio/my_db_images:v1.0-db6108
[root@localhost ~]# docker images
REPOSITORY                                                     TAG                 IMAGE ID            CREATED             SIZE
registry.cn-shanghai.aliyuncs.com/huazai_studio/my_db_images   v1.0-db6108         f8ea30f3fbef        4 hours ago         94.9MB

 

 

 


 好了,关于 如何实现将 docker 镜像推送到远程共有/私有镜像仓库  就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。 
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。


作       者:华    仔
联系作者:who.seek.me@java98k.vip
来        源:优快云 (Chinese Software Developer Network)
原        文:https://blog.youkuaiyun.com/Hello_World_QWP/article/details/84874916
版权声明:本文为博主原创文章,请在转载时务必注明博文出处!
`docker-maven-plugin` 是 Maven 插件之一,用于将 Java 应用程序,包括基于 Spring Boot 的项目,构建为 Docker 镜像。以下是使用这个插件将应用打包并推送私有仓库的基本步骤: 1. **添加插件依赖**:首先,在 `pom.xml` 文件的 `<build>` 标签内添加 `docker-maven-plugin` 的依赖配置,例如: ```xml <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.15</version> <!-- 更新到最新版本 --> </plugin> </plugins> ``` 2. **配置镜像信息**:在 `<project>` 节点下设置 Dockerfile 相关的配置,如镜像名称、标签、基础镜像等。这里假设你有一个名为 `application.jar` 的主程序包文件: ```xml <build> <plugins> <plugin> <configuration> <imageName>${project.artifactId}</imageName> <imageTags> <tag>${project.version}</tag> <tag>latest</tag> <!-- 如果需要常量更新的标签 --> </imageTags> <baseImage>openjdk:8-jdk-alpine</baseImage> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build> ``` 3. **私有仓库配置**:如果你有一个私有Docker注册表(如JFrog Artifactory),你需要配置 Maven 的 Docker 接口,通常通过环境变量 `DOCKER_REGISTRY_URL` 和 `DOCKER_USERNAME`、`DOCKER_PASSWORD` 或者认证密钥: ```xml <profiles> <profile> <id>docker-push</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <dockerPushRepository>your-private-repo:5000</dockerPushRepository> <!-- 替换为你的私有仓库地址 --> </properties> <build> <plugins> <plugin> <executions> <execution> <goals> <goal>push</goal> </goals> <phase>deploy</phase> </execution> </executions> <configuration> <registryUrl>${dockerPushRepository}</registryUrl> <username>your-docker-registry-username</username> <password>your-docker-registry-password</password> <!-- 或者从安全环境下获取密钥 --> </configuration> </plugin> </plugins> </build> </profile> </profiles> ``` 4. **构建和推送镜像**:运行 `mvn clean package docker:build docker:push -Pdocker-push` 来构建并推送镜像
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechBro华仔

日拱一卒无有尽,功不唐捐终入海

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值