有时候使用Docker Hub这样的公共仓库可能不方便(有时候无法访问),用户创建一个本地仓库供私人使用,这里使用官方提供的工具docker-registry来配置私有库。

1、使用官方提供的工具来配置

docker-registry  是官方提供的工具,可以用于构建私有的镜像仓库

私有仓库好处:

  1. 节约带宽
  2. 可以自己定制系统

搭建私有仓库的思路:

  • 老的思路:下载源码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端口