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

前言

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

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

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

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

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

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

【Docker】将本地镜像推送到远程库/私有库_第1张图片

        然后创建个人版实例

【Docker】将本地镜像推送到远程库/私有库_第2张图片

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

【Docker】将本地镜像推送到远程库/私有库_第3张图片

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

【Docker】将本地镜像推送到远程库/私有库_第4张图片

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

【Docker】将本地镜像推送到远程库/私有库_第5张图片

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

 【Docker】将本地镜像推送到远程库/私有库_第6张图片

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

【Docker】将本地镜像推送到远程库/私有库_第7张图片

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

【Docker】将本地镜像推送到远程库/私有库_第8张图片

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

【Docker】将本地镜像推送到远程库/私有库_第9张图片        在虚拟机中查看 docker images 所有镜像

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

【Docker】将本地镜像推送到远程库/私有库_第10张图片

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

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

        docker rmi -f 镜像ID 删除掉本地hello-world【Docker】将本地镜像推送到远程库/私有库_第11张图片

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

【Docker】将本地镜像推送到远程库/私有库_第12张图片

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

【Docker】将本地镜像推送到远程库/私有库_第13张图片

        打印出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格式,注意不要漏掉了 逗号,

        

        保存文件退出后记得重启一下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 该容器已经运行起来了。

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

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

 

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

       ps:镜像Id:Tag  不写tag表示为最新版本。tag为修改命名规范,这里将要推送的镜像名字修改为规范的ip地址:端口号/名。 push表示推送该镜像。

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

        

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

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

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

        此时从私有库里拉取镜像,拉取的即为之前上传时规范的名字的镜像

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

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


总结

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

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

你可能感兴趣的:(docker)