Docker私有仓库
Docker的公共仓库
由Docker公司维护的Registry,用户也可以将自己的镜像保存到DockerHub上中免费的response中,因为在国内访问由很多的限制
登录方法
1 | docker login -u 用户名 密码 https:// |
登录后下载方法
1 | docker pull 用户名/images名:tag |
Quay
被红帽收购后速度相当慢,红帽对国内还不是完全开放,是一个私人注册托管中心,它上面更多的是很多用户自己上传制作的镜像,没有很多的官方镜像,使用面也不是很广
阿里云镜像仓库
是国内提供docker镜像的仓库,需要用户登录后在控制中心,找到容器镜像服务,可以镜像镜像搜索、新建自己的仓库、也包括官方镜像和其他用户开放的镜像,官方镜像是直接拿取的DockerHub的镜像,属于国内的一个缓存。
这些公有镜像不适合工作中去使用,接下来就看私有仓库
使用registry私有仓库镜像
Harbor仓库在微服务架构的文章中已经写到怎么使用了,这里就不多说了
环境要:Docker服务器必须开启路由转发
使用两台主机来完成接下来验证私有仓库的使用
| 主机 | 服务 | 备注 |
|---|---|---|
| 192.168.1.11 | 已安装启动docker | 私有仓库 |
| 192.168.1.12 | 已安装启动docker |
步骤
两台主机都做路由转发
1 | echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf |
下载私库镜像
192.168.1.11
下载2版本的私有仓库镜像,2版本是go语言写的,速度和安全性都比1要好,1是python写的
1 | [root@localhost ~]# docker pull registry:2 |
创建私库在本地物理机的存放路径
1 | [root@localhost ~]# mkdir -p /opt/data/registry |
运行私库
使用镜像实例化,并进行相应的指定,后台运行仓库
1 | docker run -itd -p 5000:5000 --restart always \ |
运行起来后,在本地是可以监听到5000端口的
1 | [root@localhost ~]# netstat -anput | grep 5000 |
查看仓库中的镜像
1 | [root@localhost ~]# curl 192.168.1.11:5000/v2/_catalog |
指定私库地址
需要修改docker的服务文件,让docker知道私有仓库地址
1 | [root@localhost ~]# vim /usr/lib/systemd/system/docker.service |
重新加载配置文件,并重启服务生效
1 | [root@localhost ~]# systemctl daemon-reload |
查看服务状态,可以看到是否识别到了私有仓库
1 | [root@localhost ~]# systemctl status docker -l |
192.168.1.12
进行修改docker的文件去指向docker的私有仓库地址
1 | [root@localhost ~]# vim /usr/lib/systemd/system/docker.service |
验证
192.168.1.11
使用tag为镜像改个名字
注意:改名字要按照格式来私库ip:5000/镜像名,否则会上传失败
此时镜像名的作用:push到私库中(私库ip:5000),镜像名为httpd
1 | [root@localhost ~]# docker tag httpd:latest 192.168.1.11:5000/httpd |
将改名后的镜像上传到私有仓库中
1 | [root@localhost ~]# docker push 192.168.1.11:5000/httpd |
查看上传后的私库中的镜像192.168.1.12
查看到的镜像名和前面讲的是一样的
1 | [root@localhost ~]# curl 192.168.1.11:5000/v2/_catalog |
下载镜像,速度相当快
1 | [root@localhost ~]# docker pull 192.168.1.11:5000/httpd |
192.168.1.11
查看镜像映射到本地的存储目录
1 | [root@localhost ~]# ls /opt/data/registry/docker/registry/v2/repositories |
查看仓库中镜像的信息
查看httpd镜像的tags
1 | [root@localhost ~]# curl 192.168.1.11:5000/v2/httpd/tags/list |
查看镜像的hash值
1 | curl 192.168.1.11:5000/v2/httpd/manifests/latest \ |
删除私库镜像
1 | # 直接进入目录删除其中一个镜像的目录即可 |
