【实战演练】kubernetes&docker系列03-kubernetes私有镜像仓库搭建

由于国内功夫网的网络限制,直接从docker的原生仓库拉取镜像,需要非常长的时间,甚至还会timeout超时。

因此,往往配置docker的镜像源的时候,需要改为国内的加速源(例如阿里云的源),但是这样的操作方式,需要每台docker服务器单独进行配置,非常不方便管理,非常费时费力。

而且在内网环境,出于安全考虑,不会所有服务器都放通访问外网/外网访问它的权限,因此根本无法访问外网镜像仓库。

因此,一般采用找一台机器搭建私有仓库,这台机器从外网的加速源拉取docker镜像,然后再把docker服务器配置的源指向私有仓库的服务器,这样就可以直接从内网私有仓库拉取镜像了。

本篇介绍如何搭建私有仓库,与docker服务器如何修改配置指向本地仓库。


实验环境:

操作系统:CentOS7

机器IP:选用kubernetes的Master主机(10.1.30.24)


1、仓库主机先配置镜像加速

访问阿里云的链接,可以创建免费的docker镜像加速器。(需要自行注册账户,然后启用,会有一串token码)

vi /etc/docker/daemon.json
{ "registry-mirrors": ["https://XXXXXXXX.mirror.aliyuncs.com"] }

XXXXXXXX填写自己实际的token,然后需要运行如下命令重新加载生效。

systemctl daemon-reload
systemctl restart docker

重新拉取,发现速度明显提升很多。

2、修改host表

Master与Node都需要修改(或者直接在DNS服务器增加解析记录)

vi /etc/hosts
10.1.30.34 registry

(以下仅Master操作)

3、仓库主机注册

docker pull registry

#仓库主机注册

docker run -d -v /registry:/var/lib/registry -p 5000:5000 --restart=always --privileged=true --name registry registry:latest
docker pull hello-world

#下载一个轻量镜像测试


4、镜像打标签与上传

镜像仓库的工作原理如下:

仓库服务器从docker官方源/加速源拉取镜像(pull),然后对拉取后存在仓库服务器本地的镜像重新打标签(tag),然后再把打标签后的本地镜像重新上传到仓库(push

docker tag hello-world registry:5000/hello-world:latest
docker push registry:5000/hello-world:latest

预计会报错如下

Get https:// 10.1.30.34:5000:5000/v1/_ping: http: server gave HTTP response to HTTPS client

因为目前配置仅支持http,不支持https,所以需要修改配置。

vi /etc/docker/daemon.json
{
        "registry-mirrors": ["https://njrds9qc.mirror.aliyuncs.com"],
        "insecure-registries":["registry:5000"]
}

5、镜像打标签与上传

systemctl daemon-reload
systemctl restart docker
docker push registry:5000/hello-world:latest

输入如下命令可以查看已经上传的镜像

docker images

或者

curl http://registry:5000/v2/_catalog

(以下仅Node操作)

6、修改Node节点仓库配置

vi /etc/docker/daemon.json

{
        "registry-mirrors": ["https://XXXXXXXX.mirror.aliyuncs.com"],
        "insecure-registries":["registry:5000"]
}

#追加一行执行registry,注意上面一行以逗号结尾,否则会报错。

systemctl daemon-reload
systemctl restart docker

#重新加载配置


7、测试拉取镜像

拉取刚才已经上传的镜像测试

docker push registry:5000/hello-world:latest
docker images;

发现镜像成功拉取,仓库搭建成功。

猜你喜欢

转载自blog.51cto.com/14423403/2417029