有时候使用Docker Hub这样的公共仓库可能不方便(有时候无法访问),用户创建一个本地仓库供私人使用,这里使用官方提供的工具docker-registry来配置私有库。
1、使用官方提供的工具来配置
docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库
私有仓库好处:
- 节约带宽
- 可以自己定制系统
搭建私有仓库的思路:
- 老的思路:下载源码tar/yum安装——>安装——>修改配置文件——>启动服务
- docker的思路:直接下载并使用registry镜像启动docker实例,这样仓库就搭建成功了
实验环境:
- docker私有仓库地址:192.168.1.63
- docker服务器地址:192.168.1.64 64会使用63上docker私有仓库来pull/push镜像
1.2、配置 63为docker私有仓库服务端
- 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
systemctl restart docker
- 关闭selinux
vim /etc/sysconfig/selinux
改SELINUX=enforcing
为SELINUX=disabled
reboot
getenforce
- 启动docker
systemctl start docker
- 拉取registry镜像。registry镜像中包括搭建本地私有仓库的软件,把registry.tar上传到linux上。
方法一:导入本地镜像:
docker load -i registry.tar
方法二:docker search registry,然后再进行pull一下(但是可能因为国外网址而失败了)
查看registry镜像
docker images
扩展: .io域名
.io域名是英属印度洋领地的缩写
实战:使用registry镜像搭建一个私有仓库
使用registry镜像搭建一个私有仓库。registry镜像中已经把搭建私有库程序安装好了,我只需要使用registry镜像运行一个docker实例就行了。
默认情况下,registry程序的存放镜像信息的目录是/var/lib/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地物理机一个目录如/opt/registry挂载到容器的/var/lib/registry下。使用-v 参数,指定本地持久的路径。
registry服务监听到端口号,默认是5000
docker run -d -p 5000:5000 -v /opt/registry:/var/lib/registry registry:latest
netstat -antup | grep 5000
# 如果可以查到,代表私有库已经启动成功
查看私有仓库中的镜像列表:
http://192.168.1.64:5000/v2/_catalog # 发现现在还是空的,后期上传了本地docker镜像到私有仓库中,就有数据了。
开启64的的虚拟机,进入63开始搭建环境:
#1、安装依赖环境
yum install -y yum-utils device-mapper-persistent-data lvm2
#2、配一下docker的repo文件
yum config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#3、安装docker
yum install docker-ce docker-ce-cli containerd.io -y
systemctl start docker && systemctl enable docker
#4、修改docker配置文件,指定docker镜像加速节点为:私有仓库地址
vim /etc/docker/daemon.json # 创建这个daemon.json文件,写入以下内容:
{
'insecure-registries':['192.168.1.63:5000']
}
#5、重新启动一下docker
systemctl restart docker
注:添加标记的文字。--insecure-registry不安全的注册。这里的不安全指的是走http协议,要想安全传输镜像,需要使用https协议。我们的私有仓库一般是局域中使用,所以直接使用http协议就可以了。
实战1-上传本地镜像到私有仓库
1、从Docker HUB上拉取一个测试镜像,名字:busybox
方法一:本地导入(上传到63服务器上)
上传busybox.tar镜像到Linux系统上,作为测试镜像。
# 在64上进行操作
docker load -i busybox.tar
# 查看
docker images
# 创建镜像链接或基础镜像打个标签(复制一个镜像并起一个名字)
语法:docker tag 原镜像名:标签 私有仓库地址/新镜像名:标签
docker tag docker.io/busybox:latest 192.168.1.63:5000/busybox:latest
# 查看
docker images
# 推镜像
docker push 192.168.1.63:5000/busybox
# 然后在浏览器查看,是否上传成功
http://192.168.1.63:5000/v2/_catalog
# 登录63上,查看镜像的存储目录和文件
rpm -ivh/mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
tree /opt/registry/docker/registry/v2/repositories/
方法二:在线安装
注:BusyBox概述:BusyBox是一个集成了一百多个最常用Linux命令和工具的软件。BusyBox包含了BusyBox包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例如grep、find、mount以及telnet,有些人将BusyBox称为Llinux工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了Linux的许多工具和命令,也包含了 Android系统的自带shell。
实战2:使用私有仓库中的镜像
删除镜像
语法:docker rmi 镜像名:标签
使用新导入的镜像,运行一个新的docker实例
docker rmi 192.168.1.63:5000/busybox:latest echo "hello"
hello
运行成功
总结
搭建私有仓库步骤:
1、把registry镜像导入docker
2、基于registry镜像运行一个docker实例,registry默认监听5000端口