首页 > 其他分享 >Docker Registry深度历险

Docker Registry深度历险

时间:2023-06-05 11:33:49浏览次数:48  
标签:5000 -- Registry minikube 历险 Docker docker registry


目录

前言

环境

问题缘起

安装本地Registry

minikube访问共享image


前言

上篇我们对Docker整体有了一定了解,知道了其中一个核心概念是Registry,下来就进行更深入的学习

环境

环境:mac mini M1芯片;docker desktop(自带k8s)和minikube

问题缘起

之前确实对docker和k8s没有深入和体系化的学习,就是跑跑对应的一些示例。我在跑最新的springcloud k8s(
https://github.com/spring-cloud/spring-cloud-kubernetes)项目时遇到了一个非常不爽的问题(就是jkube的下载,特别慢 【见我之前的头条描述】)

好不容易我在凌晨较快的下载了jkube,但在后来我实验minikube的时候,又需要下载一次jkube,被折磨坏了;同时之前我在非minikube下build的镜像,通过kubectl create deployment时都会发生ImagePullBackOff错误,详细提示为: “repository does not exist or may require 'docker login': denied: requested access to the resource is denied”错误

所以我就在想如何共享镜像,否则太麻烦了,而且这镜像包非常大,这么搞几个实验我的硬盘就吃紧了

对于image镜像和registry,当时我专门写了文章(只是时间紧还没跑出来结果 还有人挑战我对这些概念理解是不正确的)

Docker Registry深度历险_Docker

今天终于跑起来并验证了,特此记录。

安装本地Registry

这里我使用独立的registry而非minikube的registry插件(addons)

docker run -d -p 5000:5000 --restart=always --name registry registry

如图:

Docker Registry深度历险_访问共享_02

registry容器

registry默认是http部署的,push时会出现“http: server gave HTTP response to HTTPS client”错误

解决方案:

一、https方式安装运行(暂未实验)

二、更改docker daemon配置(通过docker desktop界面更改)

"insecure-registries": [
    "192.168.31.192:5000"  //换成自己的ip和端口
  ],

Docker Registry深度历险_Docker_03

浏览器访问:
http://localhost:5000/v2/_catalog正常访问即ok

这个时候push即会成功,这里也需要注意下相关命令:

Docker Registry深度历险_docker_04

红线部分就是可访问url

minikube访问共享image

按照理论,现在就应该可以访问共享的镜像了,但还是报错,和上面的一样,不过这次不是push而是k8s启动容器pull时,我们通过k8s dashboard可以看到对应错误:

Docker Registry深度历险_访问共享_05

这个问题也很容易找到解决方案,就是在minikube start时增加--insecure-registry参数,官方文档:
https://minikube.sigs.k8s.io/docs/handbook/registry/

这是因为之前已经产生了K8S集群,需要删除重建

minikube delete
minikube start --insecure-registry='192.168.31.192:5000'

部署服务:

kubectl create deployment hello-minikube-7 --image=192.168.31.192:5000/ng:0.0.2

这次再看,已经成功

Docker Registry深度历险_docker_06

大功告成!

我们再从业务层面看看服务是否正常

kubectl expose deployment hello-minikube-7 --type=NodePort --port=8080

查看对应访问端口

kubectl get service

Docker Registry深度历险_docker_07

访问http://localhost:32144 ok

镜像通过registry在不同容器间共享了。

关于minikube和docker desktop间image问题,这个说的非常经典,请看

  1. Use Kubernetes from Docker Desktop instead of Minikube (Docker Desktop comes with Kubernetes cluster built-in).
  2. Build your Docker image with Docker Engine from Minikube (instead of Docker Desktop).
  3. Use external Docker registry (you can use Docker Hub or set up your own registry)

标签:5000,--,Registry,minikube,历险,Docker,docker,registry
From: https://blog.51cto.com/u_16066979/6414234

相关文章

  • application deployment by jenkinsfile and docker compose
    UsingJenkinsCI/CDforyourNodeJSapphttps://blog.harveydelaney.com/jenkins-build-test-deploy-node-app/ Jenkinsfilehttps://github.com/internetarchive/openlibrary/blob/9b7fda26cd154239ac498e06ee513a239c233ee8/scripts/solr_builder/Jenkinsfile#L3......
  • 开启docker报错
     解决方法:开启管理员权限 ......
  • docker attach退出
    当你通过`dockerattach`连接到容器并使用`/bin/bash`启动容器时,如果你直接使用`Ctrl+C`或者输入`exit`命令来退出容器,那么容器会停止。如果你想在退出容器时保持容器继续运行,有几种方法可以实现:1.使用`Ctrl+P,Ctrl+Q`组合键:按下`Ctrl+P`和`Ctrl+Q`组......
  • Failed to start docker.service: Unit docker.service not found.
    1、卸载docker 2、添加Docker官方的GPG密钥 3、更新源 4、导入证书 5、更新 6、安装docker 7、验证是否安装成功 8、安装dockercompose 9、验证是否安装成功 ......
  • Docker安装Java, Apache, Redis, Tomcat, Postgresql, SSH
    [color=red]centos安装Supervisor[/color][url]http://www.alphadevx.com/a/455-Installing-Supervisor-and-Superlance-on-CentOS[/url]网络设定[b][color=darkblue]#创建网络brctladdbrbr0iplinksetdevbr0upipaddradd192.168.2.1/24devbr0#创建容器#......
  • nas使用docker部署导航页Heimdall
    一、下载镜像linuxserver/heimdall:latest二、创建容器文件/文件夹:此处填写在nas上事先创建好的目录位置装载路径:/config类型选读写本地端口其实用自动的就行,不与已有端口冲突即可。启动容器,检查日志是否有报错项。如没有报错,容器应该为运行中的状态。三、打开Heimdall导航页点击快......
  • Docker安装MS SQL Server并使用Navicat远程连接
    MSSQLServer简介MicrosoftSQLServer(简称SQLServer)是由微软公司开发的关系数据库管理系统,它是一个功能强大、性能卓越的企业级数据库平台,用于存储和处理大型数据集、支持高效查询和分析等操作。SQLServer支持广泛的应用程序开发接口(API),包括T-SQL、ADO.NET、ODBC、OLE......
  • 云原生之使用Docker部署TeaKKi知识文档管理工具
    (云原生之使用Docker部署TeaKKi知识文档管理工具)一、TeaKKi介绍Teakki是一款知识文档管理工具,当前支持企业本地私有化部署,免费试用有效期30天。适用于团队,企业的知识协作和管理.,为你构建团队的知识库!TeaKKi专注知识知识协作,让团队知识协作变得简单高效。二、检查docker......
  • docker安装过程
    1.下载必要的包sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm22.指定虚拟机去哪里安装docker sudoyum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo3.安装docker  sudoyuminstalldocker-cedocker-c......
  • docker安装mysql
    1.从DockerHub下载MySQL镜像:dockerpullmysql2.运行MySQL容器,并将主机的3306端口映射到容器的3306端口:dockerrun-p3306:3306--namemysql-eMYSQL_ROOT_PASSWORD=your_password-dmysql其中,--namemysql指定容器的名称为mysql,-p3306:3306将容器的3306端口映射......