vlambda博客
学习文章列表

k8s进阶之搭建私有镜像仓库

前言:本来这一章节应该继续写k8s中的容器,但需要用到私有镜像仓库,所以中间插一个特别章,搭建私有仓库。


企业通常会因为如下几个原因,需要搭建自己的私有 docker registry:

  • 限制 docker 镜像的分发范围,例如:只允许在内网分发,或者只允许被授权的用户获取 docker 镜像

  • 提高推送 docker 镜像以及抓取 docker 镜像时的网络传输速度


在这种情况下,您需要在 Kubernetes 中使用私有 docker registry 中的 docker 镜像。

目前大家用的比较多的有registry和harbor,我们今天两种都来说一下。

搭建registry:

从docker仓库拉取registry私服仓库镜像。

docker pull registry
[test@test01 ~]$ docker pull registryUsing default tag: latestlatest: Pulling from library/registrye95f33c60a64: Pull complete 4d7f2300f040: Pull complete 35a7b7da3905: Pull complete d656466e1fe8: Pull complete b6cb731e4f93: Pull complete Digest: sha256:da946ca03fca0aade04a73aa94b54ff0dc614216bdd1d47585f97b4c1bdaa0e2Status: Downloaded newer image for registry:latestdocker.io/library/registry:latest

然后使用docker images来查看刚刚我们拉取的镜像

[test@test01 ~]$ docker imagesregistry latest 5c4008a25e05 4 weeks ago 26.2MB

下面我们进行仓库安装,运行下面的命令:(之前也写过docker方面的,大家可以翻着去看下)

docker run -d -p 5000:5000  --name myregistry --restart=always registry
ca4477c843436974b6f743765767348edd6753106ecd8dad03b09f6d406313b3

参数详解: run:启动    -d: 后台运行    -p 5000:5000 宿主机5000端口映射到容器5000端口(registry仓库默认开启5000端口)    --name myregistry 容器重命名    --restart=always 重启设置()    registry[:tag] 需要启动到仓库名称(不添加tag,默认拉取最新版:latest

使用docker ps 查看运行的容器,可以看到我们刚才运行的私服仓库了

ca4477c84343 registry "/entrypoint.sh /etc…" 37 seconds ago Up 37 seconds 0.0.0.0:5000->5000/tcp myregistry

下面我们要为我们的docker进行设置,不然无法识别我们刚才安装的私服仓库。修改/etc/docker/daemon.json文件,如果没有则创建,vim /etc/docker/daemon.json,添加如下内容:{ "insecure-registries":["192.168.0.100:5000"] },  ,注意 后边还有个逗号, 英文模式下的逗号。192.168.0.100改为自己的ip


Docker 自从1.3版本以后,交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以我们需要对docker的配置文件进行修改,解决办法是:在docker server启动的时候,增加启动参数,默认使用HTTP访问。编辑文件, /usr/lib/systemd/system/docker.service


在第14行后面增加 :--insecure-registry  192.168.0.100:5000,此处ip换成你registry所在的ip。

然后重启docker,完成配置。

systemctl daemon-reload systemctl restart docker

使用docker info命令查看我们配置的registry仓库,

至此,registry就搭建完毕啦。


下边我们说下harbor,也推荐大家使用这种。Harbor 比 registry相比好处是: harbor支持多种功能、图形化界面管理、多用户权限、角色管理机制、安全机制。

我们使用来进行安装,也可以参考官方安装文档:

https://github.com/goharbor/harbor

https://github.com/goharbor/harbor/releases/download/v2.1.4/harbor-online-installer-v2.1.4.tgz

 [test@test01 harbor]$tar xf harbor-online-installer-v2.1.4.tgz cd harbor[test@test01 harbor]$ lscommon.sh  harbor.yml.tmpl  install.sh  LICENSE  prepare


参数详解:  打开harbor.yml.tmpl

hostname: reg.mydomain.com    # 可以修改为  ip   也可以做映射
http: port: 80
https: port: 443  certificate: /your/certificate/path   # 证书公钥 private_key: /your/private/key/path # 证书公钥


harbor_admin_password: Harbor12345    #登录的默认密码 默认用户admin
database: password: root123 max_idle_conns: 50 max_open_conns: 1000
data_volume: /data  # 数据存储地址


clair: updaters_interval: 12
trivy: ignore_unfixed: false skip_update: false insecure: false
jobservice: max_job_workers: 10
notification: webhook_job_max_retry: 10
chart: absolute_url: disabled
log: level: info local: rotate_count: 50 rotate_size: 200M location: /var/log/harbor

_version: 2.0.0



proxy: http_proxy: https_proxy: no_proxy: components: - core - jobservice - clair - trivy

上述修改好以后,执行install.sh  。这里注意下,要使用docker-compose,版本1.18.0+。安装过程省略。

然后我们就可以通过浏览器来进行访问了:

192.168.0.20

默认只有一个仓库 其他是我自己在用的。

那怎么使用呢?

在机器上登录.

直接使用  docker login -u admin -p Harbor12345  192.168.0.20

如果失败 就要修改   /etc/docker/daemon.json  参考上边修改

上传镜像:

首选本地有镜像,然后打tag如下

docker tag tomcat:latest 192.168.0.20/library/tomcat:v1  #打标签

docker push 192.168.0.20/library/tomcat:v1 #上传镜像

docker pull 192.168.0.20/library/tomcat:v1  就可以了