【云原生】Docker私有仓库registry

目录

1)用docker容器运行registry私有仓库服务。

2)运行私有仓库服务

3)镜像重命名(要上传的镜像名需要注明私仓的ip)

4)编辑docker配置文件(因为默认是拉取docker官方的镜像,需要重新指定)

5)其他dockerhost上传私有仓库

修改docker配置文件

查看仓库有哪些镜像


1)用docker容器运行registry私有仓库服务。

注:registry是官方打包好的服务,端口为5000,就像其他虚拟出来的web服务一样

注意,这里我们使用的是registry:2版本,还有一个registry镜像,这两个没有什么大的区别。registry: 是用Python语言写的,registry:2使用Go 语言写的,理论上来说,registry:2这个版本运行更快些。

bash 复制代码
命令:

docker pull registry:2

2)运行私有仓库服务

命令:

bash 复制代码
docker run -itd --name registry --restart=always -p 5000:5000 -v /registry:/var/lib/registry registry:2

-v:  挂载目录。  宿主机的目录(如果没有此目录会自动创建):容器内的目录。(数据卷:实现容器与宿主机之间的共享,通过一个目录"卷")
​
--restart=always:随着docker服务的启动而启动此容器

3)镜像重命名(要上传的镜像名需要注明私仓的ip)

因为我们使用的私有镜像,在上传或下载的时候,都需要我们将镜像的名称直接重命名,要注明它私有仓库的IP地址:暴露端口。切记是必须,否则将识别不到仓库而上传或下载失败。

bash 复制代码
格式为:docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG] 
命令:

docker tag nginx:latest 192.168.8.10:5000/nginx

4)编辑docker配置文件(因为默认是拉取docker官方的镜像,需要重新指定)

bash 复制代码
#初次上传命令:
docker push 192.168.8.10:5000/nginx  #上传私有仓库会报错
#以下是报错:
#The push refers to repository [192.168.8.10:5000/nginx]
#Get https://192.168.8.10:5000/v2/: http: server gave HTTP response to HTTPS client

//上传镜像失败原因如下:

因为docker默认是从dockehub上下载镜像的,需要在本地指定一下私有仓库的IP加端口,这是因为 Docker默认不允许非HTTPS 方式推送镜像。 如果没做这一步,会报HTTPS的错。

#编辑docker的配置文件,指定私有仓库地址

bash 复制代码
vim /usr/lib/systemd/system/docker.service
修改:
[Service]
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.8.10:5000  
​
​
#修改完成之后重新加载docker和重启
systemctl daemon-reload
systemctl restart docker
​
#再次上传测试
docker push 192.168.8.10:5000/nginx:v1

本地dockerhost查看私有仓库镜像方法:进入到私有仓库的共享目录

bash 复制代码
cd /registry/docker/registry/v2/repositories/
ls

5)其他dockerhost上传私有仓库

这里注意,既然是私有仓库,肯定是要考虑多台DockerHost共用的情况, 如果有其他的DockerHost想要使用私有仓库,仅需要修改docker的配置文件,指定私有仓库的IP和端口即可。当然别忘了,更改过配置文件之后, daemon-reload ,restart docker服务。

修改docker配置文件
bash 复制代码
vim /usr/lib/systemd/system/docker.service
​
[Service]
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.8.10:5000  
​
systemctl daemon-reload
systemctl restart docker.service
docker info
#看到私仓ip即为成功
 Insecure Registries:
 192.168.8.10:5000
 127.0.0.0/8
查看仓库有哪些镜像
bash 复制代码
curl -XGET http://192.168.8.10:5000/v2/_catalog
  -X/--request  指定什么命令
  -G/--get 以get的方式来发送数据
  -E/--cert cert[:passwd] 客户端证书文件和密码 (SSL)
  -T/--upload-file  上传文件
​
curl http://localhost:5000/v2/_catalog      #查看本地私有仓库镜像
​
curl http://192.168.8.10:5000/v2/nginx/tags/list
{"name":"nginx","tags":["latest"]} //并看到详细的自定义 版本号
相关推荐
回忆是昨天里的海15 小时前
k8s暴露服务-Ingress环境部署
云原生·容器·kubernetes
tzhou6445216 小时前
Kubernetes Pod 入门
云原生·容器·kubernetes
木童66221 小时前
K8s 组网方案深度解析:Flannel vs Calico 原理与选型
云原生·容器·kubernetes
刘一说21 小时前
微服务配置中心:从痛点到实践——Nacos深度应用指南
spring boot·spring cloud·微服务·云原生·架构
DeepFlow 零侵扰全栈可观测21 小时前
DeepFlow 实践:利用 eBPF 实现覆盖从网关到数据库的全栈分布式追踪
网络·分布式·云原生·云计算
无心水1 天前
【分布式利器:腾讯TSF】8、Service Mesh云原生演进:Java应用零侵入接入腾讯TSF全解析
分布式·云原生·envoy·service_mesh·service mesh·分布式利器·腾讯tsf
mr_orange_klj1 天前
关于k8s pod状态的AI问答(chatGPT)
云原生·容器·kubernetes
Mr_sun.1 天前
微服务框架课程
微服务·云原生·架构
羊羊羊i2 天前
使用Informer监听K8s资源
云原生·容器·kubernetes
VermiliEiz2 天前
二进制文件部署k8s方式(5)
云原生·容器·kubernetes