配置docker私有仓库

创建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

(0)
上一篇 2021年11月17日
下一篇 2021年11月17日

相关推荐

发表回复

登录后才能评论