前言
这里记录如何将本地镜像推送到远程库和私有库。
区别,一个是存放到阿里云,同一个团队可以登录到同一个阿里云仓库,去拉取镜像。一个是存放到本地私有库,同一个团队可以连接同一个私有库,去拉取镜像。例如,有重要机密东西不想放到阿里云仍然可以进行协调工作。
ps:这里选择阿里云-容器镜像服务-个人版
一、本地镜像发布到阿里云
创建阿里云-容器镜像服务-个人版实例
注册/登录阿里云后搜索容器镜像服务
然后创建个人版实例
点击进入个人版实例-选择命名空间-创建命名空间
然后选择镜像仓库-选择到刚刚创建的命名空间
点击创建镜像仓库,输入好仓库名称,这里命名空间相当于镜像用户名,仓库名称相当于镜像名。
选择下一步后,选择本地仓库-创建镜像仓库
回到个人实例哪里,选择访问凭证-固定密码设置。
选择镜像仓库-点击刚刚创建的仓库,发现阿里云已经给出了操作指南那里的代码
进入Linux虚拟机/云服务器,在管理员模式下输入当前页面的代码,ps:这里请复制你自己页面的来运行。这里使用的centos7
在虚拟机中查看 docker images 所有镜像
登录阿里云Docker Registry,请复制自己阿里云仓库页面的登录代码,密码为之前设置好的访问凭证-固定密码。
tag 表示将该镜像命名修改为规范名 push表示推送该镜像。
验证是否推送成功: 先删除本地的hello-world
docker rmi -f 镜像ID 删除掉本地hello-world
从自己的阿里云镜像仓库拉取镜像,可以看到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格式,注意不要漏掉了 逗号,
保存文件退出后记得重启一下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 发现已经从私有库里拉取到了。
将镜像推送到私有库,从私有库拉取镜像完成 。
总结
将本地镜像推送到阿里云和私有库的方法。
区别,一个是存放到阿里云,同一个团队可以登录到同一个阿里云仓库,去拉取镜像。一个是存放到本地私有库,同一个团队可以连接同一个私有库,去拉取镜像。例如,有重要机密东西不想放到阿里云仍然可以进行协调工作。