本文演示在开发或测试环境中使用 Docker Registry 发布镜像并配置K8s使用该镜像仓库。
部署并配置 Docker Regsitry
- 获取镜像
1 | docker pull registry |
- 生成密码
安装 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 |
- 启动 Registry
1 | docker run -d -p 5000:5000 \ |
登陆验证
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
- 创建一个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"], |