k8s进阶之搭建私有镜像仓库
前言:本来这一章节应该继续写k8s中的容器,但需要用到私有镜像仓库,所以中间插一个特别章,搭建私有仓库。
企业通常会因为如下几个原因,需要搭建自己的私有 docker registry:
限制 docker 镜像的分发范围,例如:只允许在内网分发,或者只允许被授权的用户获取 docker 镜像
提高推送 docker 镜像以及抓取 docker 镜像时的网络传输速度
在这种情况下,您需要在 Kubernetes 中使用私有 docker registry 中的 docker 镜像。
目前大家用的比较多的有registry和harbor,我们今天两种都来说一下。
搭建registry:
从docker仓库拉取registry私服仓库镜像。
docker pull registry
[test@test01 ~]$ docker pull registry
Using default tag: latest
latest: Pulling from library/registry
e95f33c60a64: Pull complete
4d7f2300f040: Pull complete
35a7b7da3905: Pull complete
d656466e1fe8: Pull complete
b6cb731e4f93: Pull complete
Digest: sha256:da946ca03fca0aade04a73aa94b54ff0dc614216bdd1d47585f97b4c1bdaa0e2
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest
然后使用docker images来查看刚刚我们拉取的镜像
[test@test01 ~]$ docker images
registry 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]$ ls
common.sh harbor.yml.tmpl install.sh LICENSE prepare
参数详解: 打开harbor.yml.tmpl
hostname: reg.mydomain.com # 可以修改为 ip 也可以做映射
http:
port: 80
https:
port: 443
/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 就可以了