K8s使用 Docker Registry 作为镜像库

本文演示在开发或测试环境中使用 Docker Registry 发布镜像并配置K8s使用该镜像仓库。

部署并配置 Docker Regsitry

  1. 获取镜像
1
docker pull registry
  1. 生成密码

安装 htpasswd

1
sudo apt-get install apache2-utils

生成密码,并将密码文件存放在 /opt/docker/register/auth 目录中

1
sudo mkdir /opt/docker/registry/auth -p

生成密码

1
htpasswd -Bbn admin admin123 > /opt/docker/registry/auth/htpasswd
  1. 启动 Registry
1
2
3
4
5
6
docker run -d -p 5000:5000 \
--restart=always --name registry \
-v /opt/docker/registry/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry

登陆验证

1
docker login 192.168.0.135:5000

注意:替换 192.168.0.135 为你的服务器的内网地址

得到提示

1
Error response from daemon: Get https://192.168.0.135:5000/v2/: http: server gave HTTP response to HTTPS client

这是因为我们没有为该 Regsitry 配置 SSL 的原因(内网并且是测试环境,可以这样使用)

修改 /etc/docker/daemon.json

加入以下内容

1
"insecure-registries":["192.168.0.135:5000"],

同样注意:替换 192.168.0.135 为你的服务器的内网地址

需要重启 docker, 执行

1
sudo systemctl restart docker

配置在K8中使用该 Registry

  1. 创建一个secret, 在 K8s 集群中的 Master 上执行
1
kubectl create secret docker-registry my-registry-secret --docker-server=192.168.0.135:5000 --docker-username=admin --docker-password=admin123

成功建立后,可以用下面的命令查看

1
kubectl get secret

因为没有为 registry 配置SSL, 所以需要为集群中的每个 Node 修改修改 /etc/docker/daemon.json

加入以下内容

1
"insecure-registries":["192.168.0.135:5000"],

本文标题:K8s使用 Docker Registry 作为镜像库

文章作者:Morning Star

发布时间:2021年08月23日 - 17:08

最后更新:2022年01月03日 - 11:01

原始链接:https://www.mls-tech.info/microservice/k8s/k8s-pull-private-docker-registry/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。