创建docker私有化仓库(使用官方docker-registry)
创建docker私有化仓库
1、私有仓库介绍
有时候使用Docker Hub这样的公共仓库可能不方便(有时候无法访问),用户可以创建一个本地仓库供私人使用,这里使用官方提供的工具docker-registry来配置私有库
1、使用官方提供的工具来配置
docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。
私有仓库好处:
1、节约带宽
2、可以自己定制系统
有了docker以后,所有软件不再以office.exe 或lrzsz.rpm形式发布,而以docker镜像发布。你只需要下载docker镜像并运行一个docker实例。有了docker以后,再也不用为安装linux服务而发愁。
实验环境:
docker私有仓库地址:192.168.3.71
docker服务器地址 : 192.168.3.72 ,72会使用71上docker私有仓库来pull/push镜像
2、配置3.71为docker私有仓库
2.1. 关闭防火墙
# systemctl stop firewalld && systemctl disable firewalld
# systemctl restart docker #要重启一下docker的
# iptables -L -n #查看规则时,发现即使关了firewalld,docker服务也会调用Netfilter内核模块,新增加防火墙转发规则。
2.2. 关闭selinux
# vim /etc/sysconfig/selinux
改:SELINUX = enforcing
为:SELINUX=disabled
#reboot
# getenforce
3、配置3.71为docker私有仓库服务端
3.1.启动docker
# systemctl start docker
2.拉取registry 镜像。 registry镜像中包括搭建本地私有仓库的软件:
把registry.tar上传到Linux上
方法一:导入本地镜像:
# docker load -i registry.tar
方法二: 在线导入镜像,比较慢
# docker pull registry
查看registry镜像 # docker images
4. 实战:使用registry镜像搭建一个私有仓库
使用registry镜像搭建一个私有仓库。 registry镜像中已经把搭建私有库程序安装好了,我只需要使用registry镜像运行一个docker实例就可以了。
默认情况下,Registry程序的存放镜像信息的目录是/var/lib/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地物理机一个目录如/opt/registry挂载到容器的/var/lib/registry下。使用-v参数,指定本地持久的路径。--restart=always 表示docker服务重启时容器自动重启
registry服务监听到端口号,默认是5000
# docker run -d -p 5000:5000 -v /opt/registry:/var/lib/registry registry:latest
# docker run -d -p 5000:5000 --restart=always -v /opt/registry:/var/lib/registry registry:latest
查看端口服务是否开启:# netstat -antup | grep 5000
# netstat -ntlup | grep 5000 tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 10065/docker-proxy tcp6 0 0 :::5000 :::* LISTEN 10077/docker-proxy
查看私有仓库中的镜像列表:
http://192.168.3.71:5000/v2/_catalog #发现,现在还是空的,后期上传了本地docker镜像到私有仓库中,就有数据了。
5、在3.72上搭建docker服务并修改配置使用3.71的私有仓库
5.1. 在3.72上在线安装docker
安装docker环境依赖
# yum install -y yum-utils device-mapper-persistent-data lvm2
配置国内docker的yum源(阿里云)
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker-ce
# yum install docker-ce docker-ce-cli containerd.io -y
# systemctl start docker && systemctl enable docker
5.2. 修改docker配置文件
修改docker配置文件,指定docker镜像加速结点为:私有仓库的地址
# vim /etc/docker/daemon.json #创建这个daemon.json文件,写入以下内容:
{
"insecure-registries": [ "192.168.3.71:5000" ]
}
注:添加红色标记文字。 --insecure-registry不安全的注册。这里的不安全指的是走http协议,要想安全传输镜像,需要使用https协议。我们的私有仓库一般是局域中使用,所以直接使用http协议就可以了。
实战-上传本地镜像到私有仓库
1、 从Docker HUB 上拉取一个测试镜像,名字: busybox
1.1 方法一:本地导入
上传busybox.tar镜像到Linux系统上,作为测试镜像。
# docker load -i busybox.tar
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 00f017a8c2a6 2 weeks ago 1.11 MB
1.2 方法二:在线安装
# docker pull busybox
2、在3.72上上传busybox镜像到3.71的docker私有仓库中
2.1.创建镜像链接或为基础镜像打个标签(复制一个镜像并起一个名字)
语法: docker tag 原镜像名:标签 私有仓库地址/新镜像名:标签
执行:# docker tag busybox:latest 192.168.3.71:5000/busybox:latest
注: 不写镜像标签,默认是:latest
3. 将刚新打好标签的镜像,上传到3.71的私有仓库中。
# docker push 192.168.3.71:5000/busybox
4.登录3.71上,查看镜像的存储目录和文件
# rpm -ivh /mnt/Packages/tree-1.6.0-9.el7.x86_64.rpm
# tree /opt/registry/docker/registry/v2/repositories/
访问http://192.168.3.71:5000/v2/_catalog 可以查看私有仓库中的镜像列表,如下图:
5、使用私有仓库中的镜像创建服务
删除镜像:语法: docker rmi 镜像名:标签
[root@xuegod64 ~]# docker rmi 192.168.3.71:5000/busybox #删除镜像
[root@xuegod64 ~]# docker pull 192.168.3.71:5000/busybox #下载镜像
使用新导入的镜像,运行一个新docker实例:
[root@xuegod64 ~]# docker run 192.168.3.71:5000/busybox:latest echo "hello"
hello
运行成功。
总结
搭建私有仓库步骤:
1、把registry镜像导入docker
2、基于registry镜像运行一个docker实例,registry默认监听5000端口
导入镜像到私有仓库步骤:
1、安装docker服务
2、修改docker 服务 镜像源,改成私有仓库地址: "insecure-registries": [ "192.168.3.71:5000" ]
3、把要导入的镜像打个标签如:docker tag 原镜像名:标签 私有仓库地址/新镜像名:标签
4、上传打了标签的镜像到私有仓库: docker push 192.168.3.71:5000/busybox:latest
私有仓库的使用:
1、修改docker 服务镜像源,改成私有仓库地址: "insecure-registries": [ "192.168.3.71:5000" ]
2、下载刚才上传的镜像 : docker pull 192.168.3.71:5000/busybox:latest
3、查看私有仓库中的镜像列表:http://192.168.3.71:5000/v2/_catalog