创建docker私有化仓库
有时候使用Docker Hub这样的公共仓库可能不方便(有时候无法访问),用户可以创建一个本地仓库供私人使用,这里使用官方提供的工具docker-registry来配置私有库
1、使用官方提供的工具来配置
docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。
registry [ˈredʒɪstri] 记录,登记
私有仓库好处:
1、节约带宽
2、可以自己定制系统
docker-registry这个工具是一个镜像,直接下载并使用registry镜像启动docker实例就可以了。
有了docker以后,所有软件不再以office.exe 或lrzsz.rpm 形式发布,而以docker镜像发布。你只需要下载docker镜像并运行一个docker实例。
有了docker以后,再也不用为安装linux服务而发愁!
实验环境:
docker私有仓库地址:192.168.1.63
docker服务器地址 : 192.168.1.64 ,xuegod64会使用xuegod63上docker私有仓库来pull/push镜像
实验拓扑图:
配置xuegod63为docker私有仓库
[root@xuegod63 ~]# systemctl start firewalld #因为后面要使用端口映射
[root@xuegod63 ~]# systemctl enable firewalld
[root@xuegod63 ~]# iptables -F
2、关闭selinux
[root@xuegod63 ~]# vim /etc/sysconfig/selinux
改:SELINUX = enforcing
为:SELINUX=disabled
[root@xuegod63 ~]#reboot
[root@xuegod63 ~]# getenforce
Disabled
配置xuegod63为docker私有仓库服务端
1.启动docker
[root@xuegod63 ~]# systemctl start docker
2.拉取registry 镜像。 registry镜像中包括搭建本地私有仓库的软件:
registry [ˈredʒɪstri] 记录,登记 ; pull 拉 ; push 推
把registry.tar上传到Linux上
方法一:导入本地镜像:
[root@xuegod63 ~]# docker load -i registry.tar
方法二: 在线导入镜像,比较慢
[root@xuegod63 ~]# docker pull registry
Using default tag: latest
Trying to pull repository docker.io/library/registry …
latest: Pulling from docker.io/library/registry
。。。
acf34ba23c50: Waiting
error pulling image configuration: Get https://dseasb33srnrn.cloudfront.net/registry-v2/docker/registry/v2/blobs/sha256/13/136c8b16df203ef26b2f39e24bd3f403b63be67610ec99a5b5af0cceac5c1b51/data?Expires=1491661458&Signature=VpBWJnckUbRqJol8EWTw2ZswQ-xOjrbqDfUstwjJwA55NoaOlESDpUC2AOloQXQRXx~F7-DGwaOY4bjJpdymnVhyv5ylO2ZB1tlkgANsNYhyoKOSyT8IycW94Cee~GaXqdcwkdECsLqWbRW1S297k4jK2GXTtaZqUsBrrmx3oAQ_&Key-Pair-Id=APKAJECH5M7VWIS5YZ6Q: EOF
注: 这是因为访问不了国外的网址导致的。
解决:多再试试几次, 终于一次,你不会被墙,可以访问成功的。
扩展:下载registry镜像时,有时会访问不到国外网站,导致下载失败
3.查看registry镜像
[root@xuegod63 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/registry latest 047218491f8c 3 weeks ago 33.17 MB
扩展:.io域名
.io 是[british indian ocean territory] 英属印度洋领地的简写
4. 实战:使用registry镜像搭建一个私有仓库
使用registry镜像搭建一个私有仓库。 registry镜像中已经把搭建私有库程序安装好了,我只需要使用registry镜像运行一个docker实例就可以了。
默认情况下,Registry程序的存放镜像信息的目录是/var/lib/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地物理机一个目录如/opt/registry挂载到容器的/var/lib/registry下,这样两个目录下都有!
注:registry运行的实例的默认存储路径是/var/lib/registry,只是个临时目录,一段时间之后就会消失。所以使用-v参数,指定本地持久的路径。
registry服务监听到端口号,默认是5000
[root@xuegod63 ~]# docker run -d -p 5000:5000 -v /opt/registry:/var/lib/registry registry
e4698f625a56661edd2678269215ba42d4fa41c2da881768a741a72b4a3d0c60
[root@xuegod63 ~]# ls /opt/registry # 这个目录会自动创建
[root@xuegod63 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e4698f625a56 docker.io/registry “/entrypoint.sh /etc/” 7 minutes ago Up 6 minutes 0.0.0.0:5000->5000/tcp suspicious_colden
[root@xuegod63 ~]# netstat -antup | grep 5000
tcp6 0 0 :::5000 :::* LISTEN 4032/docker-proxy
说明,私有库已经启动成功。
查看私有仓库中的镜像列表:
http://192.168.1.63:5000/v2/_catalog #发现,现在还是空的
5.在xuegod64上搭建docker服务并使用私有仓库
开启CENTOS7.4-64-64虚拟机:
1.在线安装docker
[root@xuegod64 ~]# yum install docker -y
2.修改docker配置文件,指定docker镜像加速结点为:私有仓库的地址
[root@xuegod64 ~]# vim /etc/sysconfig/docker
修改此行
改:4 OPTIONS=’–selinux-enabled –log-driver=journald –signature-verification=false’
为:OPTIONS=’–selinux-enabled –log-driver=journald –signature-verification=false –insecure-registry 192.168.1.63:5000′
注:添加红色标记文字。 –insecure-registry不安全的注册
[root@xuegod64 ~]# systemctl restart docker #启动docker服务
实战1: 在xuegod64上测试上传本地镜像到私有仓库
1.从Docker HUB 上拉取一个测试镜像,名字: busybox
方法一:本地导入
上传busybox.tar镜像到Linux系统上,作为测试镜像。
[root@xuegod64 ~]# docker load -i busybox.tar
[root@xuegod64 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/busybox latest 00f017a8c2a6 2 weeks ago 1.11 MB
docker.io/registry latest 047218491f8c 3 weeks ago 33.17 MB
注:
BusyBox 概述: BusyBox是一个集成了一百多个最常用Linux命令和工具的软件。BusyBox 包含了BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士×××。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的shell。
瑞士×××见过:1 没有:2
官网: ×××w.busybox.net
方法二:在线安装
[root@xuegod64 opt]# docker pull busybox
Using default tag: latest
Trying to pull repository docker.io/library/busybox …
latest: Pulling from docker.io/library/busybox
实验拓扑图:
2、创建镜像链接或为基础镜像打个标签(复制一个镜像并起一个名字)
语法: docker tag 镜像名:标签 私有仓库地址/镜像名:标签
# docker tag docker.io/busybox:latest 192.168.1.63:5000/busybox:latest
注: 不写镜像标签,默认是:latest
[root@xuegod64 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.63:5000/busybox latest 00f017a8c2a6 2 weeks ago 1.11 MB
3、将刚新打好标签的192.168.1.63:5000/busybox镜像,push到本地私有仓库中。
[root@xuegod64 ~]# docker push 192.168.1.63:5000/busybox
4.登录xuegod64上,查看镜像的存储目录和文件
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm [root@xuegod63 ~]# tree /opt/registry/docker/registry/v2/
。。。
└── busybox
├── _layers
│ └── sha256
│ ├── 00f017a8c2a6e1fe2ffd05c281f27d069d2a99323a8cd514dd35f228ba26d2ff
│ │ └── link
│ └── 04176c8b224aa0eb9942af765f66dae866f436e75acef028fe44b8a98e045515
│ └── link
查看私有仓库中的镜像列表:
http://192.168.1.63:5000/v2/_catalog
实战2:使用私有仓库中的镜像
删除镜像:
语法: docker rmi 镜像名:标签
[root@xuegod64 ~]# docker rmi 192.168.1.63:5000/busybox #删除镜像
[root@xuegod64 ~]# docker pull 192.168.1.63:5000/busybox #下载镜像
[root@xuegod64 ~]# docker images #查看导入的镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.63:5000/busybox latest 00f017a8c2a6 2 weeks ago 1.11 MB
使用新导入的镜像,运行一个新docker实例:
[root@xuegod64 ~]# docker run 192.168.1.63:5000/busybox:latest echo “hello”
hello
运行成功。
总结
搭建私有仓库步骤:
1、把registry镜像导入docker
2、基于registry镜像运行一个docker实例,registry默认监听5000端口
导入镜像到私有仓库步骤:
1、安装docker服务
2、修改docker 服务 镜像源,改成私有仓库地址: –insecure-registry 192.168.1.63:5000
3、把要导入的镜像打个标签如: 192.168.1.63:5000/busybox:latest
4、上传打了标签的镜像到私有仓库: docker push 192.168.1.63:5000/busybox:latest
私有仓库的使用:
1、修改docker 服务 镜像源,改成私有仓库地址: –insecure-registry 192.168.1.63:5000
2、下载刚才上传的镜像 : docker pull 192.168.1.63:5000/busybox:latest
10.3 使用阿里云私有仓库存储自己的docker镜像
10.3.1 使用阿云的docker私有仓库
1、登录阿里云开者平台
https://dev.aliyun.com/search.html ,在此页面中点击“创建命名空间”
创建镜像仓库:
然后,选择当前页面中的:
点管理,查看使用方法:
登录阿里云docker registry:
$ sudo docker login –username=446423587@qq.com registry.cn-hangzhou.aliyuncs.com
登录registry的用户名是您的阿里云账号全名,密码是您开通服务时设置的密码。
我的密码是: 446423587A
你可以在镜像管理首页点击右上角按钮修改docker login密码。
https://cr.console.aliyun.com/?spm=5176.1971733.2.28.4884464bqVSUpv#/imageList
登录xuegod64将本地镜像推送到阿里云registry:
1、创建镜像链接或为基础镜像打个标签
[root@xuegod64 ~]# docker login –username=446423587@qq.com registry.cn-hangzhou.aliyuncs.com # 先登录到阿里云registry
Password: 446423587A
Login Succeeded
查看本地镜像名或ID
[root@xuegod64 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
。。。
192.168.1.63:5000/busybox latest 00f017a8c2a6 12 months ago 1.11 MB
[root@xuegod64 ~]# docker tag 00f017a8c2a6 registry.cn-hangzhou.aliyuncs.com/xuegod-k8s/busybox:v2
[root@xuegod64 ~]# docker push registry.cn-hangzhou.aliyuncs.com/xuegod-k8s/busybox:v2
在阿里云上查看:
下载一个镜像:
[root@xuegod64 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/xuegod-k8s/busybox:v2
总结:
10.1 创建docker静态化IP
10.2 创建docker私有化仓库
10.3 使用阿里云私有仓库存储自己的docker镜像
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/196992.html