【云原生】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"]} //并看到详细的自定义 版本号
相关推荐
2601_959982211 小时前
从单体架构到微服务,再到云原生:现代软件架构的发展趋势
微服务·云原生·架构
有毒的教程18 小时前
Kubernetes进阶实战教程(生产落地完整版)
云原生·容器·kubernetes
秋播20 小时前
rancher 部署statefulset mariadb 10.5
云原生
至乐活着1 天前
Spring Boot 3.x核心特性深度解析:拥抱Java 17与云原生时代
spring boot·云原生·graalvm·java 17·虚拟线程
FJW0208141 天前
阿里云RDS数据库账号创建案例
云原生
leijiwen1 天前
Bsin-PaaS(毕昇)——LinkLifeVerse OS 的产业智能工程底座
云原生·云计算·paas
吠品2 天前
PHP里取月份最后一天的几种方式
java·开发语言·eureka
her_heart2 天前
ChatGPT 5.6 实战:用 AI 做云成本治理,从账单复盘到 K8s 优化
人工智能·云原生·chatgpt·kubernetes·测试用例
DolphinScheduler社区2 天前
Apache DolphinScheduler 6 月治理优化,补齐调度运维全链路细节
大数据·运维·云原生·apache·海豚调度