0


【Docker】将本地镜像推送到远程库/私有库

前言

这里记录如何将本地镜像推送到远程库和私有库。

区别,一个是存放到阿里云,同一个团队可以登录到同一个阿里云仓库,去拉取镜像。一个是存放到本地私有库,同一个团队可以连接同一个私有库,去拉取镜像。例如,有重要机密东西不想放到阿里云仍然可以进行协调工作。

ps:这里选择阿里云-容器镜像服务-个人版

一、本地镜像发布到阿里云

创建阿里云-容器镜像服务-个人版实例

    注册/登录阿里云后搜索容器镜像服务

    然后创建个人版实例

点击进入个人版实例-选择命名空间-创建命名空间

    然后选择镜像仓库-选择到刚刚创建的命名空间

点击创建镜像仓库,输入好仓库名称,这里命名空间相当于镜像用户名,仓库名称相当于镜像名。

    选择下一步后,选择本地仓库-创建镜像仓库

    回到个人实例哪里,选择访问凭证-固定密码设置。

     选择镜像仓库-点击刚刚创建的仓库,发现阿里云已经给出了操作指南那里的代码

    进入Linux虚拟机/云服务器,在管理员模式下输入当前页面的代码,ps:这里请复制你自己页面的来运行。这里使用的centos7

在虚拟机中查看 docker images 所有镜像

     登录阿里云Docker Registry,请复制自己阿里云仓库页面的登录代码,密码为之前设置好的访问凭证-固定密码。

    tag 表示将该镜像命名修改为规范名 push表示推送该镜像。 

    验证是否推送成功: 先删除本地的hello-world 

    docker rmi -f 镜像ID 删除掉本地hello-world![](https://img-blog.csdnimg.cn/1a6e31e59a4344329b9c4aed67391168.png)

    从自己的阿里云镜像仓库拉取镜像,可以看到docker iages后多了一个myhelloworld

    实例化一个容器测试一下,docker run 镜像ID  

    打印出Hello from Docker!  完成镜像推送到自己的阿里云远程仓库,从阿里云拉取。 

二、本地镜像发布到私有库

   下载镜像Docker Registry 运行代码: docker pull registry

    然后查看docker images,发现有了registry镜像

    运行 ifconfig  查看**linux的ip**地址,注意是enol这里的 inet 。记下这个ip地址

     修改这个配置文件里的内容 vim /etc/docker/daemon.json

    内容解释:

      registry-mirrors是之前设置的阿里云镜像加速(不是本文章设置的),主要方便拉取镜像。(ps:如果没有设置过的,建议设置一下,centos7中下载docker_洛云希的博客-CSDN博客 这里的第三点,设置阿里云镜像加速)

    insecure-registries :docker默认不允许http方式推送镜像,通过配置选项来取消这个限制。【】内容为刚刚通过ifconfig查看的linux的ip地址:一个端口,这里使用的5000。**注意该文件为json文件,使用的json格式,注意不要漏掉了 逗号,**

    ![](https://img-blog.csdnimg.cn/472362729eb3411f83c4e8a17efc8082.png)

    保存文件退出后记得重启一下docker :  systemctl restart docker 

    然后运行下面代码,启动一个registry容器。-d表示后台守护模式启动,-p指定端口映射,这里指使用linux的5000端口指向docker的5000, 这里的5000即json文件里设置的。

    docker run -d -p 5000:5000  -v /:/tmp/registry --privileged=true registry 

     可以看到starts 哪里的Up 该容器已经运行起来了。![](https://img-blog.csdnimg.cn/f894993384ee41499519875fa5ce0038.png)

    然后使用curl验证私服库上有什么镜像

curl -XGET http://Linux的ip地址:5000/v2/_catalog 可以看到,目前私服库没有任何镜像上传过。

   使用 docker   tag   镜像Id:Tag   Host:Port/Repository    

   ps:镜像Id:Tag  不写tag表示为最新版本。tag为修改命名规范,这里将要推送的镜像名字修改为规范的ip地址:端口号/名。 push表示推送该镜像。![](https://img-blog.csdnimg.cn/d32e1beeea0845b29cec3ed5147c854d.png)

     查看此时的私服库是否有镜像上传过。此时发现有了一个刚刚上传的myhelloworld

    ![](https://img-blog.csdnimg.cn/54d78bea896c4d75ad6bb8d2d816fbab.png)

    通过docker images 查看我们上传的那个镜像的ID,将原镜像和修改命名规范的镜像删除掉。

     运行:docker rmi -f 镜像ID   删除掉镜像。

    再次运行docker images此时发现没有了上传的那个镜像 

    此时从私有库里拉取镜像,拉取的即为之前上传时规范的名字的镜像![](https://img-blog.csdnimg.cn/4c66782775f04f89a3a9804049f0c70c.png)

    运行 docker images 发现已经从私有库里拉取到了。 

    将镜像推送到私有库,从私有库拉取镜像完成 。

总结

将本地镜像推送到阿里云和私有库的方法。

区别,一个是存放到阿里云,同一个团队可以登录到同一个阿里云仓库,去拉取镜像。一个是存放到本地私有库,同一个团队可以连接同一个私有库,去拉取镜像。例如,有重要机密东西不想放到阿里云仍然可以进行协调工作。

标签: docker

本文转载自: https://blog.csdn.net/weixin_55519875/article/details/129499366
版权归原作者 洛云希 所有, 如有侵权,请联系我们删除。

“【Docker】将本地镜像推送到远程库/私有库”的评论:

还没有评论